我有一个JFrame
,它是一个窗口的顶层容器,以及一个包含在JFrame中的JComponent
(我已实现)。
在我的JComponent逻辑的一部分中,我需要将窗口大小调整为特定大小,但现在重要的是我尝试了,它没有用。我尝试在JFrame,JComponent和在组件上调用setPreferredSize
返回的setSize
上调用Container
和getParent()
。
我觉得这与更改大小后不调用pack
有关,但我无法弄清楚如何从JComponent访问JFrame来调用它上面的包(我不是摇摆专家)
谢谢
答案 0 :(得分:3)
您始终可以通过调用SwingUtilities#getWindowAncestor
方法获取顶级窗口:
Window topLevelWindow = SwingUtilities.getWindowAncestor(myComponent);
topLevelWindow.pack();
传递你的组件。只需确保在GUI呈现后只调用 ,否则你会得到一个令人讨厌的NullPointerException。