有没有办法在Java中引用当前帧?

时间:2011-02-01 22:47:37

标签: java swing menu jframe

我有一个菜单栏类(MenuBarGUI),我把它放在我的所有其他类中,我需要知道是否可以通过菜单中的选项关闭它所包含的当前JFrame。通常我可以调用setVisible(false)然后调用dispose(),但由于菜单栏没有对当前帧的引用,我不能这样做。有没有办法做到这一点?

3 个答案:

答案 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")等。