2011-12-12 76 views
3

我有一個Java桌面應用程序,我希望當用戶選擇Exit來獲得一個彈出窗口詢問他是否要繼續關閉應用程序。我知道如何讓窗口出現並閱讀用戶的響應,但是我需要知道的是如何阻止應用程序關閉(類似System.close().cancel())。如何停止Java應用程序的關閉

這可能嗎?

+0

的可能的複製[如何選擇一個Swing的WindowListener否決的JFrame關閉](http://stackoverflow.com/問題/ 3777146 /何燦-A-擺動的WindowListener否決權-的JFrame閉) – Autar

回答

0

在您JFrame,你必須設置一個defaultCloseOperation

JFrame.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE); 

然後設置彈出窗口的關閉動作EXIT_ON_CLOSE

1

您可以添加窗口偵聽器。 (注:WindowAdapterjava.awt.event包)

myframe.addWindowListener(new WindowAdapter() { 
    public void windowClosing(WindowEvent e) { 
     // do something 
    } 
}); 
7

是的,它是可能的。

調用setDefaultCloseOperation(DO_NOTHING_ON_CLOSE)後,添加WindowListenerWindowAdapter並在windowClosing(WindowEvent)方法,彈出一個JOptionPane

int result = JOptionPane.showConfirmDialog(frame, "Exit the application?"); 
if (result==JOptionPane.OK_OPTION) { 
    System.exit(0);  
} 
1

設置setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);到你的JFrame或JDialog的後,添加Windows監聽器:

addWindowListener(new WindowAdapter() { 
     @Override 
     public void windowClosing(WindowEvent arg0) { 
      int result = JOptionPane.showConfirmDialog((Component) null, "Do u really want to exit ?!", 
        "Confirmation", JOptionPane.YES_NO_OPTION); 
      if (result == 0) { 
       System.exit(0); 
      } else { 

      } 
     } 
    }); 
相關問題