-1
可以说我有以下结构。如何获得最顶部的框架或窗框
其实,红色是的JDialog。 我的问题是如何获得红色jdialog内的黑色主框架,以便我可以改变黑色框架的某些内容。他们不是父子关系。
有没有什么方法可以用来先获取窗口然后得到黑框?
我听说SwingUtilities.getWindowAncestor可能能够做我想做的事情。我尝试过并没有成功。
可以说我有以下结构。如何获得最顶部的框架或窗框
其实,红色是的JDialog。 我的问题是如何获得红色jdialog内的黑色主框架,以便我可以改变黑色框架的某些内容。他们不是父子关系。
有没有什么方法可以用来先获取窗口然后得到黑框?
我听说SwingUtilities.getWindowAncestor可能能够做我想做的事情。我尝试过并没有成功。
你可以用许多不同的方式拍摄。根据您是否需要一次性解决方案或动态解决方案,其策略会发生变化。作为一次性的解决方案,如果你只是总想找到主框架,你可以使用其他人已经建议的参考或做一个单身主框架,在那里你可以像访问它一样MainFrame.getInstance().doWhateveryouwanted();
然而,它不明确它的目标,你提出来,我扔在了一些有用的方法:基于SwingUtilities类
Frame[] frames = JFrame.getFrames();
for (Frame frame : frames) {
if (frame.isActive()) {
return frame;
}
}
for (Frame frame : frames) {
if (frame.isVisible()) {
return frame;
}
}
,还有其他非常有用的方法,看here。 结账SwingUtilities.getDeepestComponent() or SwingUtilities.getAccessibleAt()
你真的应该拥有多个JFrame吗? http://stackoverflow.com/questions/9554636/the-use-of-multiple-jframes-good-bad-practice – Sinkingpoint
如果你需要改变父母,你需要提供某种对父母的引用,直接或者直接(我会劝阻)或通过某种模型/控制器,您可以请求以您的名义以某种方式应用更改 – MadProgrammer
I second @ MadProgrammer的recs。当然,魔鬼的所有细节,这意味着解决方案的细节将取决于您的代码和您的问题的细节。当你陈述“父母”时,我只是有点担心,因为继承与这个问题无关。 –