【发布时间】:2011-06-19 14:59:13
【问题描述】:
我有一个菜单栏类 (MenuBarGUI),我已将其放入所有其他类中,我需要知道是否可以通过菜单中的选项关闭它包含的当前 JFrame。通常我可以调用 setVisible(false) 然后 dispose() 但是因为菜单栏没有对当前帧的引用,所以我不能这样做。有没有办法做到这一点?
【问题讨论】:
我有一个菜单栏类 (MenuBarGUI),我已将其放入所有其他类中,我需要知道是否可以通过菜单中的选项关闭它包含的当前 JFrame。通常我可以调用 setVisible(false) 然后 dispose() 但是因为菜单栏没有对当前帧的引用,所以我不能这样做。有没有办法做到这一点?
【问题讨论】:
以上方法都不适合我。
由于我只需要面板的直接父级,因此通过 super 调用直接访问它们:super.setTitle("The new Frame Title") 等。
【讨论】:
getParent() 将获取父容器。使用这种方法,您将不得不进行一些铸造。更理想的选择是让菜单栏采用包含关闭方法的界面。
这是一个例子:
JFrame frame = new JFrame();
JMenuBar bar = new JMenuBar();
frame.setJMenuBar(bar);
if(bar.getParent().getParent().getParent() instanceof JFrame){
System.out.println(bar.getParent().getParent().getParent());
}
【讨论】:
如果你的MenuBarGUI 类扩展了JMenuBar,你可以使用getTopLevelAncestor 方法来获取菜单栏的窗口。
【讨论】: