我想要使用JPanel
来包含3个垂直组件:
JLabel
JTextField
JScrollPane
我希望所有3个组件都填充JPanel
的宽度。我希望JLabel
和JTextField
使用正常的高度,JScrollPane
使用其余的高度。
BoxLayout
几乎可以正常工作,但JTextField
和JScrollPane
在JPanel
变大时似乎共享“额外”空间。
我该怎么办?
答案 0 :(得分:2)
创建BorderLayout。将JScrollPane放在其中心。
使用BoxLayout创建JPanel。将JLabel和JTextField垂直放入其中。把那个JPanel放到BorderLayout的NORTH侧。
答案 1 :(得分:1)
GridBagLayout非常方便。你可以控制你需要的任何东西,你只能控制你需要的东西。您可能只对垂直参数感兴趣。
答案 2 :(得分:1)
您还可以使用DesignGridLayout,如下所示:
DesignGridLayout layout = new DesignGridLayout(thePanel);
layout.row().center().fill().add(theLabel);
layout.row().center().fill().add(theTextField);
layout.row().center().fill().add(theScrollPane);
这应该与你描述的一模一样。
每次调用row()都会在面板中创建一个新行。
对fill()的调用确保每个组件使用整个可用宽度。
这里使用DesignGridLayout的一些优点是: