Gridbag 布局未正确对齐

Gridbag layout not aligning properly

我正在使用 java 和 swing 开发单人纸牌游戏,但我遇到了一个烦人的问题。我有一个带有 miglayout 的游戏面板,看起来工作正常,但在它里面还有 7 个面板,上面有成堆的纸牌,每个面板都有一个 gridbaglayout,但正如你在下一张图片中看到的那样,纸牌堆未正确对齐:

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

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

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

有人可以帮我解决这个问题吗?我已经弄乱了很长时间 运行 但没有成功 :(

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

这将为该组件提供额外的 space 面板。阅读 How to Use GridBagLayout 上的 Swing 教程部分了解更多信息。

但是,我建议更好的解决方案是使用垂直 BoxLayout,然后您可以在末尾添加 "glue" 以占用额外的 space.

类似于:

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

另一种选择可能是使用 Overlap Layout。此布局管理器允许您将组件放置在另一个之上。

我相信我在代码中发现了问题。

在classpClassico.java中,尝试更改第296行:

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

用这个:

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

这是我的环境:

希望对您有所帮助!