我正在尝试以类似桌子的方式设置几个标签和文本字段。
目前我正在使用GridLayout,这种工作方式正如我所希望的那样。但是, TextFields 和按钮正在扩展到单元格的完整大小。
如何使 TextFields 和 Button “正常”大小,以及布局管理器以最简单的方式完成哪些操作?
这是当前的代码和屏幕截图:
JPanel forms = new JPanel();
forms.setLayout(new GridLayout(3, 2));
JLabel lbl_navn = new JLabel("Virksomhedsnavn:");
JTextField txt_navn = new JTextField();
JLabel lbl_adresse = new JLabel("Adresse:");
JTextField txt_adresse = new JTextField();
forms.add(lbl_navn);
forms.add(txt_navn);
forms.add(lbl_adresse);
forms.add(txt_adresse);
forms.add(Box.createRigidArea(new Dimension(10, 10)));
forms.add(new JButton("Opret virksomhed"));
答案 0 :(得分:1)
我建议你使用gridBagLayout: http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html
举个例子: JPanel forms = new JPanel(); forms.setLayout(new GridBagLayout());
JLabel lbl_navn = new JLabel("Virksomhedsnavn:");
JTextField txt_navn = new JTextField();
JLabel lbl_adresse = new JLabel("Adresse:");
JTextField txt_adresse = new JTextField();
//Setting grid bag constraints
GridBagConstraints c = new GridBagConstraints();
// Grid position coordinates
c.gridx = 0; c.gridy = 0;
//Align panel in top-left corner
c.anchor=GridBagConstraints.LINE_START;
forms.add(lbl_navn, c);
c.gridx = 1; c.ipadx = 195;
forms.add(txt_navn, c);
c.gridy = 1; c.gridx = 0; c.ipadx = 0;
forms.add(lbl_adresse, c);
c.gridx = 1; c.ipadx = 195;
forms.add(txt_adresse,c);
c.gridy = 2; c.gridx = 0; c.ipadx = 0;
forms.add(Box.createRigidArea(new Dimension(10, 10)),c);
c.anchor=GridBagConstraints.CENTER;
c.gridy = 2; c.gridx = 1;
forms.add(new JButton("Opret virksomhed"),c);
希望这有帮助。
答案 1 :(得分:0)
我认为您可以参考这个问题,其中给出了有用的答案: JTextField Fixed Height
答案 2 :(得分:0)
前一段时间我读过关于Mig布局的好东西,我从未使用过,但看起来非常强大。 检查此Mig layout,可能是解决问题的好方法。
更新: Mig布局不是sun / oracle的“标准”布局。
如上所述,GridBagLayout可以完成您的目标(来自经验)。我个人在需要固定尺寸组件时使用“null布局”。