我一直在使用 JFrame 创建一个用于登录屏幕的程序,我似乎得到了很长的登录和取消条(使用网格布局(2,1,10,10)。所以我在网格内创建了小缓冲区标签布局并将其更改为 2,3,10,10,网格中有 4 个缓冲区。我使用它是因为 setPreferredSize 语法不起作用。您能给我用于登录和取消的有效 PrefferedSize 语法吗? 这是我的带有缓冲区标签的初始化代码
public class access implements ActionListener
{
boolean flag=false;
JFrame frame;
JTextField username;
JPasswordField password;
JButton login,clear;
JPanel panel1,panel2,panel3;
JLabel user,pass,output,b1,b2,b3,b4;
String[] details;
access()
{
frame = new JFrame("authentication ");
panel1= new JPanel();
panel2= new JPanel();
panel3= new JPanel();
username=new JTextField(10);
password=new JPasswordField(10);
b1=new JLabel("");
b2=new JLabel("");
b3=new JLabel("");
b4=new JLabel("");
user= new JLabel("username : ");
pass= new JLabel("password : ");
output=new JLabel(" ");
login=new JButton("login");
login.setPreferredSize(new Dimension(40, 10));
clear= new JButton("clear");
clear.setPreferredSize(new Dimension(100,40));
login.addActionListener(this);
clear.addActionListener(this);
initialize();
}
public void initialize()
{
panel1.setLayout(new GridLayout(2,2,10,10));
panel1.add(user);
panel1.add(username);
panel1.add(pass);
panel1.add(password);
panel2.setLayout(new GridLayout(2,3,5,5));
panel2.add(b1);
panel2.add(login);
panel2.add(b2);
panel2.add(b3);
panel2.add(clear);
panel2.add(b4);
panel3.setLayout(new FlowLayout());
panel3.add(output);
frame.setLayout(new GridLayout(3,1,10,10));
frame.getContentPane().add(panel1);
frame.getContentPane().add(panel2);
frame.getContentPane().add(panel3);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,180);
frame.setVisible(true);
}
最佳答案
GridLayout
忽略首选大小。使用另一个 LayoutManager 例如GridBagLayout
关于java - setPreferedSize 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23444599/