我正在使用 Swing 在 Java 中创建一个游戏。
我正在使用
mainJFrame.setExtendedState(mainJFrame.getExtendedState() | JFrame.MAXIMIZED_BOTH);
在我的 JFrame 上将其启动为最大化窗口。
此后我正在使用
mainJFrame.pack();
能够获取 GUI 中组件的正确 x 和 y 坐标。我需要这些坐标,因为我正在向 GUI 绘制自定义图像。到目前为止一切都很好。
当用户通过一个级别时,我重建 GUI 以将其更新为新的级别设置,然后再次调用 pack()。
当调用 pack() 时,组件被放置在错误的位置,略低于它们应该放置的位置。
但是,手动调整窗口大小会导致组件再次到达正确的位置。
我尝试在 pack()
之后调用 mainJFrame.revalidate()
和 mainJFrame.repaint()
但这没有效果。
如果需要,我可以提供打印屏幕和代码。
感谢您的宝贵时间。
最佳答案
手动调整窗口大小可以验证封闭容器及其所有子组件。为了避免您所描述的效果,请仅在添加组件并调用 pack()
后调用 setVisible()
。更多相关建议可参见here 。如果问题仍然存在,请编辑您的问题以包含 mcve这说明了问题。
关于java - .pack() 导致组件位于错误的位置,但在窗口大小调整后有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24239091/