setPrefferedSize不起作用

时间:2014-05-03 12:45:47

标签: java swing jbutton preferredsize

我一直在使用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);
}

1 个答案:

答案 0 :(得分:3)

GridLayout忽略首选尺寸。使用其他LayoutManager例如GridBagLayout