Java SetPreferedSize不工作

Java SetPreferedSize不工作,java,swing,jbutton,preferredsize,Java,Swing,Jbutton,Preferredsize,我用JFrame为登录屏幕创建了一个程序,我似乎得到了登录和取消的长条(使用网格布局(2,1,10,10)。因此,我在网格布局中创建了小的缓冲区标签,并将其更改为2,3,10,10,网格中有4个缓冲区。我之所以使用该标签,是因为setPreferredSize语法不起作用。您能否为我提供登录和取消时使用的PreferedSize语法? 这是我的初始化代码和缓冲区标签 public class access implements ActionListener { boolean flag=fals

我用JFrame为登录屏幕创建了一个程序,我似乎得到了登录和取消的长条(使用网格布局(2,1,10,10)。因此,我在网格布局中创建了小的缓冲区标签,并将其更改为2,3,10,10,网格中有4个缓冲区。我之所以使用该标签,是因为setPreferredSize语法不起作用。您能否为我提供登录和取消时使用的PreferedSize语法? 这是我的初始化代码和缓冲区标签

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

GridBagLayout
忽略首选大小。使用另一个
LayoutManager
例如
GridBagLayout
忽略首选大小。使用另一个
LayoutManager
例如
e> GridBagLayout

GridBagLayout
忽略首选大小。使用另一个
LayoutManager
例如
GridBagLayout

出于好奇,您是否考虑过使用a来代替?您的对话框看起来很简单,可以使用一个。出于好奇,您是否考虑过使用a来代替?您的对话框看起来很简单o使用一个。出于好奇,您是否考虑过使用一个?您的对话框看起来很简单,可以使用一个。出于好奇,您是否考虑过使用一个?您的对话框看起来很简单,可以使用一个。