假设我有以下结构。
实际上红色的是JDialog。 我的问题是如何在红色jdialog中获得黑色主框架,以便我可以改变黑色框架的某些东西。他们不是亲子关系。
我是否可以使用任何方法先获取窗口然后获取黑框?
我听说SwingUtilities.getWindowAncestor可以做我想做的事。我尝试过但没有成功。
答案 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()