我有一個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