从JInternalFrame调用JFrame的方法,而不执行新实例



我在做这件事时遇到了一个小问题:

从JFrame中,我调用了一个JIinternalFrame,所以,我想从JIF中调用JF的一个方法。问题是,如果我创建这个JF的新实例,则不会应用更改,因为它不是同一个原始实例。

我在这个JIF中进行登录,如果凭据正确,JF中的菜单必须更改,否则,不必应用任何更改。

我在互联网上的其他网站上读到"调用"是解决方案,但"调用"显然只适用于新实例。还有其他解决方案吗?

不要考虑JFrame或JInternalFrame,因为如果/当您扩展程序时,您可能不会使用任何扩展这两个类的类。相反,您应该从一个对象如何调用另一个对象的方法的总体角度来看待这一点。解决方案是让一个对象获得对感兴趣的对象有效引用,可能是通过构造函数参数或setter方法传入该引用。然后对该引用调用所需的公共方法。在这个JFrames和Swing中,与任何其他Java程序都没有什么不同。

关于,

我在互联网上的其他网站上读到"调用"是解决方案。。。

不,这与您当前的问题无关,而是与Swing线程问题有关,这也不是您当前代码失败的原因。

要获得更多帮助和更好的帮助,请考虑创建并发布ssce。

感谢大家的帮助!

我已经解决了问题!

一般来说,为了调用我所有的JInternalFrames,我使用了一个通用的全局声明:

private JInternalFrame jif;

但为了解决我的问题,我直接使用我的JInternalFrame的类声明了一个新的构造函数:

private LogInJInternalFrame logIn;

在调用之前,我在登录JIF:中声明了一个公共全局构造函数

public MainJFrame mainJF;

这样,使用JF中的新构造函数,我就可以访问JIF中的所有公共声明。然后,我用这样的东西打了电话:

private void logInCall(){
    logIn = new LogInJInternalFrame(); //--New instance of my JIF
    logIn.mainJF = this;  /*Set the class to the constructor instead to declare a new one*/
    logIn.setVisible(true);
}

之后,在我的JIF中,当凭据正确时,我使用了以下内容:

mainJF.setNewUserMenu();  /*The class's instance let me "invoke" the method I've wanted*/

仅此而已,在结果出来后,我只能说"我真的需要放松更多,更好地思考事情"。

再次感谢!!!

最新更新