[英]JFrame catch dispose event
我有一個 Java 項目。
我有一個 JFrame 像這樣附加了一個處理程序
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
this.setEnabled(true);
}
});
但是,在該框架上我還有一個關閉按鈕(以使其更加用戶友好)並且該“關閉”按鈕調用框架處理方法。 現在,當我通過單擊右上角的小 x 按鈕關閉框架時,將調用 WindowListener。 但是當我調用 dispose 方法時事件不會觸發。
我應該調用其他方法來關閉,以便 WindowListener 觸發,還是實現另一個偵聽器?
您應該看看WindowListener 接口。
windowClosing() :當用戶嘗試從窗口的系統菜單關閉窗口時調用。 (窗口X按鈕)
windowClosed() :當窗口因調用dispose在窗口上而關閉時調用。
所以, windowClosing()
只有在用戶點擊窗口的X按鈕時才會被調用; windowClosed()
在dispose()
事件被調用時被調用,所以它總是被調用:
JFrame myFrame = new JFrame();
myFrame.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosed(java.awt.event.WindowEvent windowEvent) {
// your code
}
});
來源: https : //alvinalexander.com/blog/post/jfc-swing/closure-your-java-swing-application-when-user-presses-close-but
在那個框架上,我還有一個關閉按鈕(使其更加用戶友好)
查看關閉應用程序解決方案來處理這個問題。 您真正需要做的就是將“ExitAction”添加到您的按鈕中,但您可以根據需要使用整個方法。
如果你想可靠地捕獲dispose
,無論它是如何調用的,你都可以重寫dispose
方法。 通常你想調用super.dispose()
並在它之前或之后實現任何自定義處理以適合給定任務。
JFrame frame = new JFrame("FrameDemo") {
@Override
public void dispose() {
System.out.println("On dispose");
super.dispose();
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.