我有一个菜单栏类(MenuBarGUI),我把它放在我的所有其他类中,我需要知道是否可以通过菜单中的选项关闭它所包含的当前JFrame。通常我可以调用setVisible(false)然后调用dispose(),但由于菜单栏没有对当前帧的引用,我不能这样做。有没有办法做到这一点?
答案 0 :(得分:4)
如果您的MenuBarGUI类扩展了JMenuBar,您可以使用getTopLevelAncestor方法获取菜单栏的窗口。
答案 1 :(得分:1)
getParent()
将获取父容器。使用这种方法,你将不得不做一些铸造。更理想的选择是让菜单栏采用包含close方法的界面。
以下是一个例子:
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());
}
答案 2 :(得分:0)
上述方法都不适合我。
由于我只需要面板的直接父级,直接通过超级调用访问它们:super.setTitle("新的Frame Title")等。