我正在制作一个应用程序,它在关闭时作为托盘图标继续运行,然后我就有了这个方法。
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/