用GridBagLayout可实现复杂可控的布局。
以一个输入框为例:
final JTextField username = new JTextField();
final JTextField password = new JTextField();
JPanel regist = new JPanel();
regist.setLayout(new GridBagLayout());
regist.add(new JLabel("username:"),
new GridBagConstraints(0,0,1,1,
0.0,0.0,
GridBagConstraints.CENTER,
GridBagConstraints.NONE,
new Insets(2,2,2,2),
0,0));
regist.add(username,
new GridBagConstraints(1,0,1,1,
0.0,0.0,
GridBagConstraints.CENTER,
GridBagConstraints.NONE,
new Insets(2,2,2,2),
200,0));
regist.add(new JLabel("password"),
new GridBagConstraints(0,1,1,1,
0.0,0.0,
GridBagConstraints.CENTER,
GridBagConstraints.NONE,
new Insets(2,2,2,2),
0,0));
regist.add(password,
new GridBagConstraints(1,1,1,1,
0.0,0.0,
GridBagConstraints.CENTER,
GridBagConstraints.NONE,
new Insets(2,2,2,2),
200,0));
这里面用到了GridBagConstraints 来定义组件的位置排列信息。
最终的效果如下:
后面输入框的长度可以修改值200 来改变。
具体GridBagConstraints 可参见GridBagConstraints