2011-08-29 59 views
3

我有一个JFrameGridBagLayout。 weightx和weighty值被分配了不同的非零值,并且GridBagConstraints.fill = GridBagConstraints.BOTH。我在一个单元格中嵌套了一个JPanel,并给它一个GridBagLayout。向嵌套JPanel添加组件时,嵌套JPanel所在位置的单元格大小在所有侧缺少父级布局。不使用插入和填充。
我该如何解决这个问题?谢谢。 这是GridBagConstraints的值的示例:与GridBagLayout嵌套的JPanel

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

+0

你能包含代码吗?你能描述一下你想要发生什么吗? – eon

回答

4

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

+0

@ Ken Blair:我想在添加嵌套JPanel的组件前,让父级的布局保持原定义。谢谢 – FadelMS

2

这是在这么晚的日期可能是完全没有用的,你的,但是......

看起来你可能同时使用铺设了两个新的按钮时。

如果树上的preferredSize.width是你想要的内板的宽度,
和你想要的两个新按钮各自树的宽度的一半,

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

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