當單擊JFrame標題欄上的紅色關閉按鈕時,是否有某種方式「執行某些操作」?我想要做的是在單擊按鈕時調用一個名爲confirmExit()
的方法。到目前爲止,我唯一的選擇是讓它無所作爲,但我不想那樣做。我該如何做到這一點?在JFrame上單擊關閉按鈕時執行某些操作
在此先感謝。
當單擊JFrame標題欄上的紅色關閉按鈕時,是否有某種方式「執行某些操作」?我想要做的是在單擊按鈕時調用一個名爲confirmExit()
的方法。到目前爲止,我唯一的選擇是讓它無所作爲,但我不想那樣做。我該如何做到這一點?在JFrame上單擊關閉按鈕時執行某些操作
在此先感謝。
import javax.swing.JOptionPane;
import javax.swing.JFrame;
/*Some piece of code*/
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent windowEvent) {
if (JOptionPane.showConfirmDialog(frame,
"Are you sure to close this window?", "Really Closing?",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION){
System.exit(0);
}
}
});
覆蓋windowClosing方法。
public void windowClosing(WindowEvent e)
當窗口處於被關閉的過程中它被調用。關閉操作可以在此時被覆蓋。
請問如果用戶關閉應用程序(例如,通過點擊Cmd的+ Q在Mac上)這項工作?實現此方法的類是否必須爲此代碼聲明「實現WindowListener」?如果是這樣的話,那麼在答案中加入它可能會很好。否則這是一個優雅的解決方案。 – brandaemon 2015-11-20 21:42:09
試試這個:
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
它將工作。
這可能工作:
jdialog.addWindowListener(new WindowAdapter() {
public void windowClosed(WindowEvent e) {
System.out.println("jdialog window closed event received");
}
public void windowClosing(WindowEvent e) {
System.out.println("jdialog window closing event received");
}
});
來源:https://alvinalexander.com/java/jdialog-close-closing-event
這就是我把,那是我在做一個JFrame
按鈕顯示另一JFrame
菜單選項。我只想要新的框架可見,而不是摧毀它後面的框架。我最初隱藏了第一個JFrame
,而新的變得可見。在關閉新的JFrame
後,我將其處理完畢,然後再次讓舊的可見。
注:下面的代碼擴展了斷Ravinda的回答和ng
是JButton
:
ng.addActionListener((ActionEvent e) -> {
setVisible(false);
JFrame j = new JFrame("NAME");
j.setVisible(true);
j.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent windowEvent) {
setVisible(true);
}
});
});
單擊否時窗口仍然關閉。有沒有辦法阻止它? – WVrock 2014-12-06 18:05:18
@WVrock'setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);' – 2014-12-06 19:53:24
謝謝,它的工作原理。 – WVrock 2014-12-06 20:16:51