如何获得最顶部的框架或窗框

时间:2014-01-30 22:18:33

标签: java swing jframe awt

假设我有以下结构。

enter image description here

实际上红色的是JDialog。 我的问题是如何在红色jdialog中获得黑色主框架,以便我可以改变黑色框架的某些东西。他们不是亲子关系。

我是否可以使用任何方法先获取窗口然后获取黑框?

我听说SwingUtilities.getWindowAncestor可以做我想做的事。我尝试过但没有成功。

1 个答案:

答案 0 :(得分:0)

你可以通过许多不同的方式拍摄。根据您是否只需要一次性解决方案或动态解决方案,其策略会发生变化。作为一次性解决方案,如果您总是想要找到主框架,您可以使用其他人已经建议的参考,也可以创建一个单独的主框架,只需访问它MainFrame.getInstance().doWhateveryouwanted();

然而,目前尚不清楚你要达到哪个目标,我会提出一些有用的方法:

    Frame[] frames = JFrame.getFrames();
    for (Frame frame : frames) {
        if (frame.isActive()) {
            return frame;
        }
    }
    for (Frame frame : frames) {
        if (frame.isVisible()) {
            return frame;
        }
    }

基于SwingUtilities类,还有其他非常有用的方法,请看here。 查看SwingUtilities.getDeepestComponent() or SwingUtilities.getAccessibleAt()