我有一个JFrame并创建了一个对象来打开它并在我的项目中关闭它。这意味着我只为该JFrame使用一个对象。如何在处理()后在swing中重置字段
当我打电话给dispose()
方法来关闭那个帧时,我希望它在下一次setVisible(true)
调用中被重置为新的JFrame。但是我仍然可以看到从前面的setVisible(true)
电话充值的字段,即使在我关闭它后调用dispose()
。
如何从该帧刷新存储的值,以便在拨打setVisible(true)
时获得新表格?
我有一个JFrame并创建了一个对象来打开它并在我的项目中关闭它。这意味着我只为该JFrame使用一个对象。如何在处理()后在swing中重置字段
当我打电话给dispose()
方法来关闭那个帧时,我希望它在下一次setVisible(true)
调用中被重置为新的JFrame。但是我仍然可以看到从前面的setVisible(true)
电话充值的字段,即使在我关闭它后调用dispose()
。
如何从该帧刷新存储的值,以便在拨打setVisible(true)
时获得新表格?
尝试添加WindowListener:
frame.addWindowListener(new WindowAdapter() {
public void windowClosed(WindowEvent e) {
MyJFrame frame = (MyJFrame) e.getSource();
frame.someTextField.setText("");
...
}
});
这不是测试,但应尽量接近让你开始。
的Dispose()不重置你的组件,但也可以手动创建新的JFrame:
previous.setVisible(false);
previous = new JFrame();
previous.setVisible(true);
但我可能需要像这样每天打开1000帧这样的帧。如果我继续创建像这样的新帧会影响性能吗? – Deepak 2011-03-23 00:33:46
表现 - 我不这么认为,但你可以测试它。内存 - 如果您没有任何对旧画面的引用,GC将正确删除它。我的第二个建议是手动清除组件:例如:setText(“”);等等。 – smas 2011-03-23 00:42:27
尽管技术上属实,但它仍然可能会降低性能,因为不能保证GC何时运行。 http://stackoverflow.com/questions/6309407/remove-top-level-container-on-runtime – 2011-11-10 18:00:33
谢谢..其实我正在寻找类似于dispose()的任何方法,但如果没有其他方式,然后我必须尝试这些方法。目前我正在使用刚刚告诉我的方法。 – Deepak 2011-03-23 01:21:40
没有任何内置方法会自动执行它,但是可以在调用父类的实现后重写'dispose'或'setVisible'并清除那里的字段如果你宁愿这样做。 – 2011-03-23 01:54:06