我有一个插入主内容窗格的组件,由于某种原因,它没有填充该区域。
getInstance().add(internalPanel, LayoutFactory.newFactory().setX(1).setY(1).
setWeightX(1).setWeightY(1).setFill(GridBagConstraints.BOTH));
我LayoutFactory
专门为GridBagLayout
,它只是设置属性并返回对象。
基本上,问题是当我将组件添加到内容窗格时,它并没有填满专用于它的空间。它采用绝对最小值,就好像weightX
andweightY
被设置为 0。我试过setAnchor(GridBagConstraints.FIRST_LINE_START)
and setAnchor(GridBagConstraints.NORTHWEST)
。两者都对程序没有任何明显的影响。
另外,当我设置组件的边框时,它只填充了部分空间,所以我添加到它的组件没有问题。
值得注意的是,组件出现在空间的中心,并且不跟随锚点。从这里,我认为我的问题是weightX
andweightY
属性。查看内容窗格的其他组件,每个组件都设置了权重。
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
了一段时间了,我从来没有遇到过这样的事情。
编辑:发现问题出在其他地方,因为制作一个小示例程序可以正常工作。由于我有点难过,我上传了我正在开发的程序的完整版本。不要担心它实际上做了什么,我只关心工作负载面板没有填满空间。