Java 如何在调用dispose()后重置swing中的字段

Java 如何在调用dispose()后重置swing中的字段,java,swing,jframe,Java,Swing,Jframe,我有一个JFrame,我创建了一个对象来打开和关闭我的项目。这意味着我只为该JFrame使用一个对象 当我调用dispose()方法关闭该帧时,我希望它在下一次setVisible(true)调用时被重置为新的JFrame。但是,即使在关闭前一个setVisible(true)调用dispose() 如何刷新该帧中存储的值,以便在调用setVisible(true)时获得新表单?dispose()不会重置组件,但您可以手动创建新JFrame: previous.setVisible(false)

我有一个JFrame,我创建了一个对象来打开和关闭我的项目。这意味着我只为该JFrame使用一个对象

当我调用
dispose()
方法关闭该帧时,我希望它在下一次
setVisible(true)
调用时被重置为新的JFrame。但是,即使在关闭前一个
setVisible(true)
调用
dispose()

如何刷新该帧中存储的值,以便在调用
setVisible(true)
时获得新表单?

dispose()不会重置组件,但您可以手动创建新JFrame:

previous.setVisible(false);
previous = new JFrame();
previous.setVisible(true);
尝试添加一个:


这没有经过测试,但应该足够近才能让您开始。

但我可能需要像这样每天打开1000次框架。。如果我继续这样创建新的帧,它会影响性能吗?性能-我不这么认为,但你可以测试它。内存-如果您没有任何对旧帧的引用,那么GC将正确地删除它。我的第二个建议是手动清除组件:例如:setText(“”);尽管技术上是正确的,但它仍然会降低性能,因为无法保证GC何时运行。非常感谢。实际上,我正在寻找任何类似dispose()的方法,但如果没有其他方法,那么我必须尝试这些方法。目前我正在使用您刚才告诉我的方法。没有任何内置方法可以自动执行此操作,但如果您愿意,可以重写
dispose
setVisible
,并在调用父类的实现后清除其中的字段。
frame.addWindowListener(new WindowAdapter() {
    public void windowClosed(WindowEvent e) {
         MyJFrame frame = (MyJFrame) e.getSource();
         frame.someTextField.setText("");
         ...
    }
});