.pack()导致组件位于错误的位置,但在窗口大小调整后工作

时间:2014-06-16 08:05:42

标签: java swing jframe layout-manager

我正在使用Swing在java中创建游戏。

我正在使用

mainJFrame.setExtendedState(mainJFrame.getExtendedState() | JFrame.MAXIMIZED_BOTH);

在我的JFrame上将其作为最大化窗口启动。

之后我正在使用

mainJFrame.pack();

能够获得正确的x& GUI中组件的y坐标。我需要那些坐标,因为我将自定义图像绘制到GUI。到目前为止一切都很好。

当用户通过关卡时,我会重建GUI以将其更新为新级别设置,然后再次调用pack()。

调用pack()时,组件放在错误的位置,略低于它们应该位于的位置。

但是,手动调整窗口大小会使组件再次转到正确的位置。

我尝试在mainJFrame.revalidate()之后调用mainJFrame.repaint()pack(),但这没有效果。

如果需要,我可以提供印刷品和代码。

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

手动调整窗口大小可验证封闭容器及其所有子组件。为了避免您描述的效果,请在之后仅在中调用setVisible()添加组件并调用pack()。可能会找到更多相关建议here。如果问题仍然存在,请修改您的问题以包含显示问题的mcve