본문 바로가기

자바공부

자바 스윙 응용프로그램 종료, 명품자바프로그래밍9장

728x90
반응형

* 자바에서 프로그램을 종료하기 위한 문장

System.exit(0); // 자바 프로그램을 종료한다.

'프레임 종료 버튼(X)'의 클릭은 프레임 윈도우를 닫는 버튼이지 프로그램을 종료시키는 버튼은 아니다.

프로그램이 종료되지 않고 프로그램만 닫힌 상태로 화면에 보이지 않는 상태이다.

그러므로 만일 이 버튼이 클릭되었을 때 프레임 윈도우를 닫는 것과 동시에 스윙 프로그램도 함께 자동 종료시코가자 한다면 코드가 필요하다.

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 프레임이 닫힐 때 프로그램도 함께 종료한다.

 

* 스윙 프로그램에서는 main() 메소드가 종료되어도 프레임 윈도우가 살아서 작동한다.

자바 응용프로그램이 시작되면 자바 가상기계는 이 응용프로그램을 하나의 스레드로 작동시킨다. 이것이 main 스레드이다.

자바 응용프로그램이 main() 메소드에서 더 이상 다른 스레드를 만들지 않는다.면, main 스레드만이 실행되고 main() 메소드가 종료하면 main() 스레도도 종료된다.

따라서 이 자바 응용프로그램은 더 이상 스레드를 가지지 않기 때문에 종료가 되는 것이다.

 

그러나 스윙에서는 JFrame 객체가 생성되면 main 스레드 외에 자동으로 이벤트 처리(분배) 스레드(Event Dispatch Thread)가 생성되어 사용자로부터 입력되는 키와 마우스의 움직임에 대해 컨포넌트에게 이벤트를 전달한다.

따라서 main() 메소드가 종료되어 main 스레드가 종료된다 하더라도 이벤트 처리 스레드가 남아 있기 때문에 사용자로부터 키와 마우스 입력을 처리할 수 있으며 자바 응용프로그램은 종료되지 않고 계속 작동하는 것이다.

반응형