2012-02-13 100 views
2

我有一个JLabel,JButton和JTextField都按照JPanel顺序水平排列。 JTextField最初没有任何文本。 JLabel和JButton分别显示其自然宽度。但是,JTextField的宽度很小。 (然后在用户输入文本时扩展)有JComponent用尽剩余宽度JPanel

如何让JTextField使用JLabel和JButton剩余的所有JPanel的剩余宽度,并保持该宽度,而不管输入的文本是什么?

+3

如果'JTextField(int columns)'不够用,'BoxLayout'可能会这样。 – trashgod 2012-02-13 17:54:15

+0

BoxLayout正在解决这个问题,只是现在JTextField与包含它的JPanel一样高(它不需要那么高)。 – 2012-02-13 20:16:25

+0

另请参见[*指定组件大小*](http://docs.oracle.com/zh-cn/)。 COM/JavaSE的/教程/ uiswing /布局/ box.html#大小)。 – trashgod 2012-02-13 21:59:29

回答

2

我从来没有使用BoxLayout所以它可能会伎俩。但是,当然,GridBagLayout可以做到这一点。

设置的GridBagConstraints到为gridx = 0,1,2,(分别为部件1,2和3)gridy = 0(对于所有的)和的weightx = 0的前两个和最后的weightx = 1.0零件。