2014-06-11 9 views
0

나는 스윙 데모 애플리케이션에서 다음 코드를보고 오전 :왜 WindowListener가 Swing 응용 프로그램에 있습니까?

WindowListener wndCloser = new WindowAdapter() { 
    public void windowClosing(WindowEvent e) { 
     System.exit(0); 
    } 
}; 
addWindowListener(wndCloser); 

왜 응용 프로그램을 닫으려면이 코드를 사용해야합니까? 그것 없이는 어떤 일이 벌어 질 것인가? 그리고/또는이 일을하는 다른 (더 짧은) 옵션이 있는가?

+0

'정말 끝내시겠습니까?'라는 팝업을 표시하는 좋은 장소입니다. 대화 상자도 있습니다. – Stefan

답변

3

왜 응용 프로그램을 닫으려면이 코드를 사용해야합니까?

마찬가지로 TimH에 따르면, 정보를 기록하거나, 속성을 쓰거나, 스윙 응용 프로그램을 종료하기 전에 수행 할 정리 작업을 수행 할 수 있습니다.

다음은 창 닫기 코드가 일반적으로 사용되는 방식입니다.

frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 
WindowListener wndCloser = new WindowAdapter() { 
    public void windowClosing(WindowEvent e) { 
     exitProcedure(); 
    } 
}; 
frame.addWindowListener(wndCloser); 


public void exitProcedure() { 
    frame.dispose(); 
    System.exit(0); 
} 

exitProcedure는 별도의 방법이기 때문에, 당신은 "종료"처럼의 JMenuItem 액션 리스너에서 실행할 수 있습니다.

이 기능이 없으면 어떤 일이 벌어지며이 기능을 수행 할 수있는 다른 옵션이 더 짧습니까? 당신이 어떤 기본 닫기 작업을 지정하지 않으면

더 짧은 옵션은

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

입니다, 당신의 스윙 응용 프로그램은 JFrame의를 닫은 후 계속 실행됩니다. 수십 개의 실행중인 응용 프로그램과 함께 아무것도하지 않습니다.

4

이 같은 일부 정보를 정기적으로 로그인하는 데 사용할 수 있습니다 :

frame.addWindowListener(new WindowAdapter() { 
     @Override 
     public void windowClosing(WindowEvent e) { 
     log.info("Programm exit."); 
      System.exit(0); 
     super.windowClosed(e); 
     } 
}); 

더 짧은 버전은 다음과 같습니다

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);