有没有办法在Java中获取对当前帧的引用?
我有一个菜单栏类(MenuBarGUI),我把它放在我所有的其他类中,我需要知道我是否可以通过菜单中的一个选项关闭它所包含的当前JFrame。通常我可以调用setVisible(false)然后dispose(),但是因为菜单栏没有对当前帧的引用,所以我不能这样做。有什么方法可以做到这一点吗?有没有办法在Java中获取对当前帧的引用?,java,swing,menu,jframe,Java,Swing,Menu,Jframe,我有一个菜单栏类(MenuBarGUI),我把它放在我所有的其他类中,我需要知道我是否可以通过菜单中的一个选项关闭它所包含的当前JFrame。通常我可以调用setVisible(false)然后dispose(),但是因为菜单栏没有对当前帧的引用,所以我不能这样做。有什么方法可以做到这一点吗?getParent()将获取父容器。用这种方法你必须做一些铸造。一个更理想的选择是让菜单栏可以采用包含close方法的界面 以下是一个例子: JFrame frame = new JFrame();
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());
}
若MenuBarGUI类扩展了JMenuBar,那个么可以使用方法来获取菜单栏的窗口 以上方法都不适合我
因为我只需要面板的直接父级,所以直接通过超级调用访问它们:super.setTitle(“新的框架标题”)等等。我如何具体实现getParent()方法?我不确定把一个容器扔到窗户上有多安全(看起来很不安全)。另外,我如何实现另一种方法呢?我添加了一个示例,但是如果您选择这条路线,Gursel关于GetToLevel祖先的建议会更合适。谢谢。我使用instanceof检查它是否是JFrame实例,然后将容器强制转换为JFrame,并执行setVisible(false)和dispose()关闭窗口。很好,谢谢。这起作用了。我铸造了容器并调用了setVisible(false)和dispose(),它成功了。