假设我有一个名为JFramechildJframe

如果我从两个不同的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。请阅读:The Use of Multiple JFrames, Good/Bad Practice?,以获取更多信息。

话虽如此,但我确实想知道您的问题是否实际上是XY Problem,当真正的解决方案是使用不同的方法时,您会问“我如何修复此代码”(请参阅​​-更多“面向对象” )的方法。

09-30 15:49