我有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之前的屏幕截图:
将组件添加到嵌套JPanel后的截图:
答案 0 :(得分:4)
这正是应该发生的事情。请解释您正在寻找的行为。另外,J2SE提供的布局管理器并不理想。在过去的生活中完成了大量的Swing工作,我强烈建议您查看JGoodies表格:http://www.jgoodies.com/freeware/forms/。查看白皮书,它易于使用,比GridBag更直观。
答案 1 :(得分:2)
在这个较晚的日期,这对你来说可能毫无用处,但是......
看起来你在布置两个新按钮时可能会使用BOTH。
如果树上的preferredSize.width是内部面板所需的宽度,则为 并且你想要两个新按钮,每个按钮都是树的宽度的一半,
将preferredSize.width设置为树的preferredSize.width的一半,并在两个按钮上使用NONE。
在内部面板的树上使用VERTICAL。 在外部面板的内部面板上使用VERTICAL。