获取哪个Jframe打开另一个Jframe

时间:2015-11-26 16:57:30

标签: java swing user-interface jframe

说我有一个名为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的实例?

2 个答案:

答案 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(或WindowChildJFrame)属性;
  • 添加ChildJFrame构造函数,该构造函数接受将分配给上述属性的参数;
  • 当您从ChildJFrame派生的某个类创建JFrame实例时,只需添加this作为参数。

然后,您拥有与父JFrame进行互动所需的一切。