繁体   English   中英

获取哪个Jframe打开了另一个Jframe

[英]Get which Jframe opened another Jframe

假设我有一个名为childJframeJFrame

如果我从两个不同的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);
}

如何确定cjfmyPage1还是myPage2的实例?

JFrame所属的Window类具有getOwner()方法,该方法将为所有子窗口返回“所有者”窗口。

但话虽如此,子窗口应该是JDialogs, 而不是 JFrame,因为您的应用程序应该只有一个JFrame,而且我相信JFrame没有所有者,因此该方法可以返回null。 如果需要在JFrame中更改“视图”,请使用CardLayout,并且如果需要显示子窗口,请使用对话框窗口,例如JDialogs和JOptionPanes。 请阅读: 使用多个JFrame,良好/不良做法? ,以获取更多信息。

但是话虽如此,我确实想知道您的问题是否可能实际上是一个XY问题 ,当真正的解决方案是使用其他方法时,您会问“我该如何修复此代码”(请参阅​​-更多“面向对象”)完全接近。

如果您的子窗口确实必须是JFrame实例(我想ChildJFrame扩展了JFrame ),那么我认为最简单的解决方案是在ChildJFrame实例中跟踪父JFrame 由于ChildJFrame是您的自定义类,因此很容易:

  • 在您的ChildJFrame类中添加一个JFrame (或FrameWindow )属性;
  • ChildJFrame添加一个构造函数,该构造函数采用将分配给上述属性的参数;
  • 当你创建一个ChildJFrame从你的一个实例JFrame派生类,只需添加this作为一个参数。

然后,您便拥有了与父级JFrame交互所需的一切。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM