GridBagLayout不填充区域

时间:2012-09-26 01:16:43

标签: java swing layout layout-manager gridbaglayout

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

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

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

基本上,问题是当我将组件添加到内容窗格时,它不会填充专用的空间。它需要绝对最小值,好像weightXweightY设置为0.我尝试setAnchor(GridBagConstraints.FIRST_LINE_START)setAnchor(GridBagConstraints.NORTHWEST)。对程序没有任何明显的影响。

此外,当我设置组件的边框时,它只填充部分空间,因此我添加的组件不会出现问题。

值得注意的是,该组件显示在空间的中心,而不是跟随锚点。从here开始,我发现我的问题是weightXweightY属性。查看内容窗格的其他组件,可以在每个组件上设置权重。

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一段时间,我从来没有碰到过这样的事情。

Here is an image of what it looks like in the space it is supposed to be

编辑:发现问题出现在其他地方,因为制作一个小示例程序工作正常。由于我有点难过,I uploaded a full version of the program I am working on.不要担心它实际上做了什么,我只关心工作量面板没有填补空间。

1 个答案:

答案 0 :(得分:0)

问题解决方案:

是将组件添加到InternalPanel类型对象,该对象没有布局管理器。 (默认为flowLayout)