2010-08-15 4 views
2

JFrame을 생성하면 프로그램이 윈도우의 작은 "exit 버튼"으로 닫힐 때까지 프로그램이 실행되는 이유는 무엇입니까?JFrame 및 실행 유지 이유

이 대답을 찾았는데 실패했습니다. 내가 짐작했던 유일한 것은 내가 new JFrame()을 할 때 그것은 new과 같아서 EDT에있는 객체에 대한 참조를 유지하므로 항상 익명의 "새로운"것이 었음에도 불구하고 참조 될 것이고 그것은 될 수 없다. 가비지 컬렉터에 의해 삭제되었습니다. 그런 다음 창 닫기 이벤트가 트리거되는 즉시 개체가 참조 해제되고 소멸됩니다.

답변

7

시도해 보면 yourFrame.setCloseOperation(JFrame.EXIT_ON_CLOSE)입니다.

계속 실행되는 이유는 이벤트 디스패치 스레드가 백그라운드에서 계속 실행되며 비 데몬 스레드가 실행되는 동안 응용 프로그램이 종료되지 않기 때문입니다. 자바 가상 머신이 시작되면, (일반적으로는있는 지정된 클래스의 main라는 이름의 메소드를 호출) 하나의 비 데몬 스레드가 보통이

: 스레드의 워드 프로세서. Runtime 클래스의

  • 출구 메서드가 호출되었고 보안 매니저가 exit 동작을 허용했다 : Java 가상 머신은 다음 중 하나가 발생할 때까지 스레드를 실행하고 있습니다.
  • 호출에서 run 메소드로 돌아가거나 run 메소드를 넘어 전파하는 예외를 throw하여 데몬 스레드가 아닌 모든 스레드가 종료되었습니다.

은 그것은 "GUI 스레드"을 맞이할 JFrame의의 생성 아니다. 이 스레드는 프레임이 표시되고 이벤트를 디스패치해야 할 때 시작됩니다.