我有一个多个JPanels
被放入对话中,经过几个小时后,我仍然无法找到存储JPanels
的帧。我想知道是否有将返回JFrame
的方法(最终目标是在setDefaultCloseOperation()
上调用JFrame
)。我在想getParent()
会这样做但是无论我经历多少层父母,我仍然无法打电话给setDefaultCloseOperation
。
答案 0 :(得分:4)
有一种实用方法: SwingUtilities.getWindowAncestor()
如果您将JPanel
添加到JFrame
,则显然是JFrame
个实例:
JFrame f = (JFrame) SwingUtilities.getWindowAncestor(panel);
注意:getWindowAncestor()
和windowForComponent()
提供相同的功能。
答案 1 :(得分:4)
Window window = SwingUtilities.windowForComponent(...);