我一直在使用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);
}
答案 0 :(得分:3)
GridLayout
忽略首选尺寸。使用其他LayoutManager
例如GridBagLayout