3

我有一个JFrame. GridBagLayoutweightx 和 weighty 值被分配不同的非零值并且 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 添加组件之前的屏幕截图:
在此处输入图像描述

这是将组件添加到嵌套 JPanel 后的屏幕截图:
在此处输入图像描述

4

2 回答 2

4

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

于 2011-08-29T23:54:09.810 回答
2

在这么晚的时候,这可能对你完全没有用,但是......

看起来您在布置两个新按钮时可能同时使用了 BOTH。

如果树上的 preferredSize.width 是您想要的内部面板的宽度,
并且您希望两个新按钮每个都是树宽度的一半,

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

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

于 2012-03-16T15:49:45.470 回答