我似乎對大多數人都有相反的問題。我要看看下面的非常標準的代碼,如果用戶想要關閉該窗口之前做一些節省:Java - 如何防止WindowClosing實際關閉窗口
frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent ev) {
boolean close = true;
// check some files, asking if the user wants to save
// YES and NO handle OK, but if the user hits Cancel on any file,
// I want to abort the close process
// So if any of them hit Cancel, I set "close" to false
if (close) {
frame.dispose();
System.exit(0);
}
}
});
無論我怎麼努力,當我走出來的windowClosing的窗口始終關閉。將WindowAdapter更改爲WindowListener沒有任何區別。奇怪的是,文檔中明確提到「如果程序在處理這個事件時沒有明確隱藏或者處理窗口,那麼窗口關閉操作將被取消」,但是這對我來說並不是那樣。有沒有其他的方式來處理框架上的x? TIA
我敢打賭,如果您通過創建[sscce](http://sscce.org)儘可能簡化您的問題,那麼存在一個對您而言顯而易見的錯誤。如果它不明顯,那麼你可以發佈sscce,我們可以在它上面工作,最好能夠幫助你。 –
根據提供的代碼,設置'close'變量的邏輯可能是錯誤的。由於它默認爲true,它會出現你不正確重置它。你是否在if語句之前打印了價值? – camickr
我剛剛遇到另一種情況,如果使用Netbeans(8.0)可能導致這些症狀。Design View自動生成的代碼將添加其自己的默認關閉操作,該操作可以覆蓋人爲生成的代碼中指定的行爲。這可以在JDialog屬性框中進行編輯。 (留下評論給後代尋求類似問題的解決方案,儘管不是Paul的問題的答案)。 –