JAVA:如何调整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 );

这会增加字段并给它一个大小在此处使用null布局是不好的,因为布局管理器将负责TextField的大小。

最新更新