嵌套JPanel与GridBagLayout

时间:2011-08-29 22:05:34

标签: java swing jpanel gridbaglayout

我有JFrame GridBagLayout。 weightx和weighty值被赋予不同的no-zero值,GridBagConstraints.fill = GridBagConstraints.BOTH。我在其中一个单元格中嵌套了一个JPanel,并给它一个GridBagLayout。将组件添加到嵌套的JPanel时,嵌套的JPanel所在的单元格大小会在所有方面增长,从而缺少父级的布局。不使用插入和填充。
如何解决此问题?谢谢。 这是GridBagConstraints值的一个示例:

GridBagConstraints treePanCon = new GridBagConstraints();
treePan.setLayout(treePanGridbag);
treePanCon.fill = GridBagConstraints.BOTH;
treePanCon.weightx = 0.5;
treePanCon.weighty = 1;
treePanCon.gridx = 0;
treePanCon.gridy = 0;
treePanCon.gridwidth = 1;
treePanCon.gridheight = 1;

这是在将组件添加到嵌套JPanel之前的屏幕截图:
enter image description here

将组件添加到嵌套JPanel后的截图:
enter image description here

2 个答案:

答案 0 :(得分:4)

这正是应该发生的事情。请解释您正在寻找的行为。另外,J2SE提供的布局管理器并不理想。在过去的生活中完成了大量的Swing工作,我强烈建议您查看JGoodies表格:http://www.jgoodies.com/freeware/forms/。查看白皮书,它易于使用,比GridBag更直观。

答案 1 :(得分:2)

在这个较晚的日期,这对你来说可能毫无用处,但是......

看起来你在布置两个新按钮时可能会使用BOTH。

如果树上的preferredSize.width是内部面板所需的宽度,则为 并且你想要两个新按钮,每个按钮都是树的宽度的一半,

将preferredSize.width设置为树的preferredSize.width的一半,并在两个按钮上使用NONE。

在内部面板的树上使用VERTICAL。 在外部面板的内部面板上使用VERTICAL。