0

我有一个插入主内容窗格的组件,由于某种原因,它没有填充该区域。

getInstance().add(internalPanel, LayoutFactory.newFactory().setX(1).setY(1).
            setWeightX(1).setWeightY(1).setFill(GridBagConstraints.BOTH));

LayoutFactory专门为GridBagLayout,它只是设置属性并返回对象。

基本上,问题是当我将组件添加到内容窗格时,它并没有填满专用于它的空间。它采用绝对最小值,就好像weightXandweightY被设置为 0。我试过setAnchor(GridBagConstraints.FIRST_LINE_START)and setAnchor(GridBagConstraints.NORTHWEST)。两者都对程序没有任何明显的影响。

另外,当我设置组件的边框时,它只填充了部分空间,所以我添加到它的组件没有问题。

值得注意的是,组件出现在空间的中心,并且不跟随锚点。从这里,我认为我的问题是weightXandweightY属性。查看内容窗格的其他组件,每个组件都设置了权重。

getInstance().add(MainFrame.buttons, LayoutFactory.newFactory().setX(0).setY(1).
            setWeightY(1).setWeightX(0).setFill(GridBagConstraints.BOTH));

getInstance().add(panel, LayoutFactory.newFactory().setX(0).setY(0).setWidth(2)
            .setWeightX(1).setWeightY(0).setAnchor(GridBagConstraints.FIRST_LINE_START)
            .setFill(GridBagConstraints.NONE));

其他地方肯定有问题,但我不想用文字淹没这篇文章。如果您需要更多信息来解决这个问题,我很乐意提供。希望这是有道理的。我已经使用GridBagLayout了一段时间了,我从来没有遇到过这样的事情。

这是它在应该是的空间中的样子

编辑:发现问题出在其他地方,因为制作一个小示例程序可以正常工作。由于我有点难过,我上传了我正在开发的程序的完整版本。不要担心它实际上做了什么,我只关心工作负载面板没有填满空间。

4

1 回答 1

0

问题解决方案:

InternalPanel正在向没有布局管理器的类型对象添加组件。(默认为 flowLayout)

于 2012-09-27T02:42:39.373 回答