[英]Get which Jframe opened another Jframe
假设我有一个名为childJframe
的JFrame
。
如果我从两个不同的JFrame
创建一个新的childJFrame。 我如何获得哪个特定的JFrame创建了childJFrame。
从而:
public class myPage1 extends javax.swing.JFrame{
// on a Button clicked
childJFrame cjf = new childJFrame();
cjf.setVisible(true);
}
第二类是
public class myPage2 extends javax.swing.JFrame{
// on a Button clicked
childJFrame cjf = new childJFrame();
cjf.setVisible(true);
}
如何确定cjf
是myPage1
还是myPage2
的实例?
JFrame所属的Window类具有getOwner()
方法,该方法将为所有子窗口返回“所有者”窗口。
但话虽如此,子窗口应该是JDialogs, 而不是 JFrame,因为您的应用程序应该只有一个JFrame,而且我相信JFrame没有所有者,因此该方法可以返回null。 如果需要在JFrame中更改“视图”,请使用CardLayout,并且如果需要显示子窗口,请使用对话框窗口,例如JDialogs和JOptionPanes。 请阅读: 使用多个JFrame,良好/不良做法? ,以获取更多信息。
但是话虽如此,我确实想知道您的问题是否可能实际上是一个XY问题 ,当真正的解决方案是使用其他方法时,您会问“我该如何修复此代码”(请参阅-更多“面向对象”)完全接近。
如果您的子窗口确实必须是JFrame
实例(我想ChildJFrame
扩展了JFrame
),那么我认为最简单的解决方案是在ChildJFrame
实例中跟踪父JFrame
。 由于ChildJFrame
是您的自定义类,因此很容易:
ChildJFrame
类中添加一个JFrame
(或Frame
或Window
)属性; ChildJFrame
添加一个构造函数,该构造函数采用将分配给上述属性的参数; ChildJFrame
从你的一个实例JFrame
派生类,只需添加this
作为一个参数。 然后,您便拥有了与父级JFrame
交互所需的一切。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.