说我有一个名为JFrame
的{{1}}。
如果我从两个不同的childJframe
创建一个新的childJFrame。如何获取创建childJFrame的特定JFrame。
因此:
JFrame
第二节课是
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
的实例?
答案 0 :(得分:7)
JFrame来自的Window类有一个getOwner()
方法,它将返回"所有者"任何儿童窗户的窗口。
但话说回来,子窗口应该是JDialogs,不是 JFrames,因为你的应用程序应该只有一个JFrame,我相信JFrames没有所有者,所以这个方法可能返回null。如果您需要更改"观看"在JFrame中,使用CardLayout,如果需要显示子窗口,请使用JDialogs和JOptionPanes等对话框窗口。请阅读:The Use of Multiple JFrames, Good/Bad Practice?,了解更多信息。
但话虽如此,我不得不怀疑你的问题实际上是否可能是XY Problem你要问的问题"我如何解决这个问题"当真正的解决方案是完全使用不同的(读取 - 更多"面向对象")方法时。
答案 1 :(得分:3)
如果您的子窗口必须是JFrame
个实例(我认为ChildJFrame
扩展JFrame
),我认为最简单的解决方案是跟踪父JFrame
in ChildJFrame
实例。由于ChildJFrame
是您的自定义类,因此很简单:
JFrame
课程中添加Frame
(或Window
或ChildJFrame
)属性; ChildJFrame
构造函数,该构造函数接受将分配给上述属性的参数; ChildJFrame
派生的某个类创建JFrame
实例时,只需添加this
作为参数。然后,您拥有与父JFrame
进行互动所需的一切。