2013-05-06 4 views
-2

Для модераторов: Пожалуйста, смотрите комментарии этого ответа: stackoverflow.com/a/16388697/1574975Невозможно определить, когда пользователь закрывает (Xs) JFrame

Я пытаюсь определить, когда пользователь осуществляется с помощью клиентскую программу с графическим интерфейсом, так что, когда они закрывают JFrame, например, Xing, я могу закрыть соединения сокета.

Но я не могу ничего сделать, когда пользователь закрывает JFrame. Мне сообщили, что мне нужно использовать WindowListener с моим JFrame, но он не работает. Мой класс расширяет JFrame и здесь является частью настройки вверх JFrame конструктора:

 this.setContentPane(pane); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     this.pack(); 
     this.setVisible(true); 
     final JFrame thisFrame = this; 
     thisFrame.addWindowListener(new WindowAdapter() { 

      @Override 
      public void windowClosed(WindowEvent e) { 
       System.out.println("User has closed window"); 
      } 
     }); 
    } 

Println внутри не получить печатный, поэтому я думаю, что это не работает. Я делаю это правильно или мне нужно сделать что-то еще?

ответ

3

windowClosed не будет вызываться, потому что JVM был закрыт в ответ на setDefaultCloseOperation, установленный на JFrame.EXIT_ON_CLOSE.

Использование windowClosing вместо или изменить defaultCloseOperation

+1

Этот ответ уже был дан ему сегодня. Поверить, почему он не следит за этим. –

+1

@HovercraftFullOfEels На самом деле, я думаю, что это был мой комментарий, который изменил принятый ответ, сказав то же самое ...: P – MadProgrammer

+0

@HovercraftFullOfEels, пожалуйста, прочитайте комментарии этого ответа: http://stackoverflow.com/a/16388697/1574975 –

Смежные вопросы