我正在制作一个在关闭时继续作为托盘图标运行的应用程序,然后我有这个方法。
public void ResetFrame(){
this.dispose()
new CreateTabs().setVisible(true);
}
它非常简单,关闭框架然后实例换一个新框架,我需要实例化一个新的而不是设置可见因为 stuff 。然后我在同一个类中多次调用此方法,问题是当我尝试从另一个类调用它时。
if(!createTabs.isVisible()){
createTabs.ResetFrame();
//createTabs.setVisible(true);
}
每次单击一个按钮时我都会调用该方法,我希望它关闭前一帧,销毁该对象的实例,这样我就可以调用一个具有新属性的新实例。
问题是:每次我点击按钮,它都会打开一个新框架而不关闭旧框架。
我尝试过dispose(),finalize()和类似的简单方法,没有任何正面结果。
先感谢您的帮助。
编辑:
对不起我的抱怨!错误发生在另一个类,即我称之为的类。
显然问题是我在课堂上实例:
private final CreateTabs createTabs = new CreateTabs();
我不需要新的CreateTabs(),我需要的是引用现有的。
答案 0 :(得分:1)
关闭Window
的方法是使用Window.dispose()。但请注意,您可能不需要这样做。如果您在Window
中重新配置组件,则可以使用pack()
让窗口完全重新布局。
在您所做的编辑中,如果您将private final CreateTabs ...
实例更改为public final ...
,则可以通过任何上下文中的classname.variable名称访问此窗口
答案 1 :(得分:1)
首先,您应该查看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);
}
如果那不是你要求的,请告诉我。