同步调整jPanel组件的大小

时间:2015-04-30 13:01:02

标签: java swing layout jpanel layout-manager

我有JFrame如下:

-------------------------|
|JFrame                  |
|                        |
|  |---------------------|
|  |JScrollPane          |
|  | |jXTaskPaneContainer|
|  | |jXTaskPane         |
|  | | |-----------------|
|  | | |jPanel1          |
|  | | |-----------------|
-------------------------|

您可以在下面看到jPanel1的布局:

|  label1   | (without title) | label2   | label3    | <--labelPanel+BoxLayout
--------------------------------------------------------
| comboBox1 |   comboBox2     |textField1|textField2 | <--controlPanel+BoxLayout

对于jXTaskPaneContainerjXTaskPane我正在使用VerticalLayout

我想要达到的目标是获得一个可调整大小的JFrame组件。

labelPanel个组件外,一切正常。

作为jLabels之间的空格。我正在使用jlabels(使用EmptyBorder)。

当我调整JFrame的大小时,jPanel1组件不会同步调整大小,如下所示:

|  label1   |   (without title) | label2   | label3    |
--------------------------------------------------------
|     comboBox1    |     comboBox2         |   textField1      | textField2|

我希望看到的结果:label1标题comboBox1label2定义textField1,...我无法同步调整它们。

如果您有任何建议,请与我分享。

1 个答案:

答案 0 :(得分:1)

BoxLayout将为其组件提供所需的空间。 JLabels将尽量保持尽可能小,而JComboBoxes将尽力扩散。

您有两个选择:使用带有JLabel的最大和首选大小的futz,或者只使用使组件尽可能大的布局 - 想到GridLayout。

事实上,您所描述的内容听起来像jPanel1上的GridLayout,不需要labelPanel或controlPanel。