JAVA : 如何调整 JPanel 的大小

JAVA : How to resize JPanel

我想更改 JPanel 的大小。我尝试了 setSize(本论坛中提出的解决方案),但它对我不起作用。

JFrame代码:

JFrame f =new JFrame();
f.setTitle("test");
f.setSize(300,400);
f.setLocationRelativeTo(null);
f.setResizable(false);
f.setLayout(null);

JPanel代码:

 JPanel display= new JPanel();
 display.setLayout(null);
 JTextField txt = new JTextField(30);
 display.add(txt,BorderLayout.NORTH);
 display.setBackground(Color.gray);
 display.setSize(30,17);

这是一个完整且可编译的示例,可以执行您正在尝试执行的操作。

import javax.swing.*;
import java.awt.*;

public class ResizableJPanel{

    public static void main(String[] args){
    
        JFrame frame = new JFrame(" with a panel");
        Container content = frame.getContentPane();
        content.setLayout(null);
        
        JPanel panel = new JPanel();
        panel.setOpaque( true);
        panel.setBackground( Color.BLACK );
        panel.setBounds( 200, 200, 400, 400);
        
        content.add(panel);        
        frame.setSize(800, 800);
        frame.setVisible(true);
        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    
    }

}

您可以更改 setBounds 的值以移动面板或调整面板大小。

您遗漏了一些重要的部分:如何将面板添加到 JFrame?你现在的方法有什么问题?

如果您的文本字段未显示,那是因为您的 JPanel 非常小,并且它的布局为空。

panel.setLayout(null);
JTextField field = new JTextField(30);
panel.add(field);
field.setBounds( 50, 110, 30, 17 );

这将添加字段并为其指定大小。 在这里使用空布局是不好的,因为布局管理器会处理 TextField 的大小。