2013-10-10 6 views
1

Я хочу остановить случайное закрытие в моем проекте. Я использую JFrame Form как домашнюю страницу. Когда я нажимаю кнопку закрытия окна «Домой», я помещаю кабель «Выход» в «Да». Я хочу прекратить закрытие, когда я нажимаю No Option. Там в любом случае. Вот мой шнур. Я использую NetBeans 7.3

Как остановить закрытие формы JFrame?

private void formWindowClosing(java.awt.event.WindowEvent evt) {         
int i= JOptionPane.showConfirmDialog(null, "Are you sure to exit?"); 
    if (i == JOptionPane.YES_OPTION) { 
     System.exit(0); 
    } else{ 
     new Home().setVisible(true); 

    } 
} 
+0

Я не думаю, что это II. :(Я могу вам сделать тот же процесс, используя событие действия кнопки. Должен ли я использовать какое-либо событие. – Dilini

+0

Можете ли вы объяснить, что не так с вашим текущим кодом? –

+0

Неверно, когда я нажимаю «Нет» или «Отменить» вместо «Да Окно закрывается. – Dilini

ответ

5

Как насчет

class MyGUI extends JFrame { 

    public MyGUI() { 
     setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);// <- prevent closing 

     final MyGUI gui=this; 
     addWindowListener(new WindowAdapter() { 
      public void windowClosing(WindowEvent e) { 
       int i = JOptionPane.showConfirmDialog(gui, 
         "Are you sure to exit?", "Closing dialog", 
         JOptionPane.YES_NO_OPTION); 
       if (i == JOptionPane.YES_OPTION) { 
        System.exit(0); 
       } 
      } 
     }); 

     setSize(200, 200); 
     setVisible(true); 
    } 

    //demo 
    public static void main(String[] args) { 
     new MyGUI(); 
    } 
} 
+0

Я получаю эту ошибку «Frame Frame doen not exit». Вы можете помочь с этим? – Dilini

+1

@ user2867987 'frame' - это не пакет, а экземпляр' JFrame', который вы хотите запретить закрывать. может поместить этот код в конструктор/инициализацию класса 'JFrame' и заменить' frame' на 'this' или даже пропустить его. – Pshemo

+0

@ user2867987 Я добавил в свой пример еще один контекст. – Pshemo

0

Вы можете просто сделать, как этот

Integer opt = JOptionPane.showConfirmDialog(null, "This application cannot continue without login to the database\n Are you sure you need to exit...?", "Application X", JOptionPane.YES_NO_OPTION); 
if(opt== JOptionPane.NO_OPTION){ 
    this.setVisible(true); 
}else{ 
    System.exit(0); 
} 
Смежные вопросы