Gridbag布局未正确对齐

时间:2019-01-08 18:24:22

标签: java swing layout-manager gridbaglayout miglayout

我正在用Java和Swing制作纸牌游戏,但遇到了一个麻烦的问题。我有一个带有miglayout的游戏面板,似乎工作正常,但其中有7个面板,其中有成堆的纸牌,每个纸牌都有一个网格袋布局,但是正如您在下一张图片中看到的那样,排列不正确:

The issue in cuestion

主面板为灰色,带有卡的面板为绿色。

创建子面板的代码在这里: https://github.com/ccokee/Solitarios/blob/master/src/pClasico.java#L166

子面板的代码在这里: https://github.com/ccokee/Solitarios/blob/master/src/pMontonC.java#L33

有人可以帮我解决这个问题吗?我一直在弄弄这个问题,但没有成功:(

2 个答案:

答案 0 :(得分:4)

默认情况下,除非其中一个组件的GridBagLayout值不等于0,否则weighty将在面板中垂直(水平)居中。

这将为该组件提供面板的额外空间。阅读How to Use GridBagLayout上Swing教程中的部分,以获取更多信息。

但是,我建议一个更好的解决方案是使用垂直的BoxLayout,然后可以在最后添加“胶水”以占用额外的空间。

类似的东西:

Box box = Box.createVerticalBox();
box.add( card1 );
box.add( card2 );
...
box.add( Box.createVerticalGlue() );

另一个选择可能是使用Overlap Layout。此布局管理器使您可以将组件彼此放置。

答案 1 :(得分:0)

我相信我在代码中找到了问题。

在类pClassico.java中,尝试更改296行:

interior.add(MontonesJuego[i], "cell " + (i+4) + " 3");

与此:

interior.add(MontonesJuego[i], "cell " + (i+5) + " 3");

这里是我所处环境的内容: Solitarios with aligned piles.

希望这会有所帮助!