java - 如何通过创建新实例并销毁旧实例来重置框架

标签 java swing

我正在制作一个应用程序,它在关闭时作为托盘图标继续运行,然后我就有了这个方法。

public void ResetFrame(){
this.dispose()
new CreateTabs().setVisible(true);
}

这非常简单,关闭框架然后实例化一个新框架,我需要实例化一个新框架,而不是仅仅设置可见,因为东西。然后我在同一个类中多次调用此方法,问题是当我尝试从另一个类调用它时。

if(!createTabs.isVisible()){
            createTabs.ResetFrame();
            //createTabs.setVisible(true);
    }

每次单击按钮时,我都会调用该方法,我希望它关闭前一帧,销毁对象的该实例,以便我可以调用具有新属性的新实例。

问题是:每次我单击按钮时,它都会打开一个新框架,而不关闭旧框架。

我尝试过 dispose()、finalize() 和类似的简单方法,但没有任何积极的结果。

预先感谢您的帮助。

编辑:

对不起我的无知!错误出现在另一个类中,即我调用它的类中。

显然问题是在我实例化该类时:

private final CreateTabs createTabs = new CreateTabs();

我不需要新的 CreateTabs(),我需要的是引用已经存在的。

最佳答案

首先您应该查看this link用于命名约定(小写函数)。

我不是 100% 确定你在问什么,但我看到注释掉的部分,并且知道它会给你一个错误(如果这就是你问的问题)。当你打电话时

public void ResetFrame() 

你说

this.dispose();

这意味着您正在告诉该实例摆脱自身。然后创建一个新实例并将其设置为可见。你说的地方

if(!createTabs.isVisible()){
    createTabs.ResetFrame();
    //createTabs.setVisible(true);
}

您告诉 createTabs 实例摆脱自身,因此您现在无法让它再次可见。您在 ResetFrame 函数中创建的 CreateTabs 新实例未被引用。如果你希望 createTabs 成为一个“新鲜”的 CrateTabs,你可以说...

public CreateTabs ResetFrame(){
    this.dispose()
    CreateTabs newTabs = new CreateTabs();
    newTabs.setVisible(true);
    return newTabs;
}
...
if(!createTabs.isVisible()){
    createTabs = createTabs.ResetFrame();
    createTabs.setVisible(true);
}

如果这不是您要问的问题,请告诉我。

关于java - 如何通过创建新实例并销毁旧实例来重置框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27383803/

相关文章:

java - JTable - 删除行时更改行

java - Java Swing 中的错误的publish()/process()交互

java - 使用 Java,我可以让一个 JVM 产生另一个,然后让原来的 JVM 退出吗?

java - 双击 jtable 的错误行为

java - 以编程方式撤销 Android 中的另一个应用程序权限

java - 不同的输出_网络

Java - 解释gridbag权重显示像素关系/公式/转换

java - 如何在 Java 中最小化/图标化 JWindow?

java - 为什么 JodaTime BaseInterval 的结束必须大于开始?

java - 检索正则表达式匹配的模式