【发布时间】:2013-03-10 08:01:06
【问题描述】:
我在学习GridBagLayout,做了很简单的布局,附上,有两个非常小的困惑
1- Size of Buttons 我用过New.setPreferredSize(new Dimension(70,23)); 是使所有按钮大小相同的标准方法
2-元件的摆放不好看
现在看到还有更多 padding on all sides of components ,那么如何以正确的方式放置 from top left corner ,我应该减小 JFrame? 的大小还是使用 frame.pack(); 两者都可以,但不知道什么是标准做法(我有试过pagestart等),
这就是我的代码的样子
frame= new JFrame("Hello ");
frame.setSize(300, 150);
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.addWindowListener(this);
frame.setResizable(false);
frame.setLocation(0, 0);
p1= new JPanel (new GridBagLayout());
gbc = new GridBagConstraints();
lblname= new JLabel("Name");
gbc.gridx=0;
gbc.gridy=0;
p1.add(lblname, gbc);
textname = new JTextField(11);
gbc.gridx=1;
gbc.gridy=0 ;
p1.add(textname, gbc);
New= new JButton("New");
gbc.gridx=2;
gbc.gridy=0;
New.setPreferredSize(new Dimension(70,23));
p1.add(New, gbc);
lblEmail = new JLabel("Email ");
gbc.gridx=0;
gbc.gridy=1;
p1.add(lblEmail , gbc);
TextEmail = new JTextField(11);
gbc.gridx=1;
gbc.gridy=1;
p1.add(TextEmail,gbc);
Edit = new JButton("Edit") ;
gbc.gridx= 2 ;
gbc.gridy=1;
Edit.setPreferredSize(new Dimension(70,23));
p1.add(Edit , gbc);
lblgender= new JLabel("Gender");
gbc.gridx=0;
gbc.gridy=2;
p1.add(lblgender, gbc);
TextGender= new JTextField(11);
gbc.gridx=1;
gbc.gridy=2;
p1.add(TextGender, gbc);
Gender= new JButton("Gender");
gbc.gridx=2;
gbc.gridy=2;
Gender.setPreferredSize(new Dimension(70,23));
p1.add(Gender, gbc);
pre= new JButton("<<");
gbc.gridx=0;
gbc.gridy=3;
p1.add(pre, gbc);
count = new JTextField(5);
gbc.gridx=1;
gbc.gridy=3;
p1.add(count, gbc);
next= new JButton(">>");
gbc.gridx=2;
gbc.gridy=3;
next.setPreferredSize(new Dimension(70,23));
p1.add(next, gbc);
p1.setVisible(true);
frame.add(p1);
frame.setVisible(true);
【问题讨论】:
-
为了获得最佳的快速回复,请考虑创建并发布sscce。
-
@HovercraftFullOfEels 喜欢你的新口号,超过 Andrew Thompson 的 ;)
-
是的,
pack()是标准做法。 -
GridBagLayout 有一个锚属性,它将确定组件在其单元格内的对齐方式。您应该尽可能避免使用 setPreferredSize,而是使用类似 fill = HORIZONTAL 的东西
-
我建议您根本不要设置任何尺寸,让布局为您执行此操作。
标签: java swing jframe gridbaglayout