2010-05-12 3 views
2

Java 응용 프로그램에서 창을 닫으려면 x 단추를 클릭하면 왜 창만 사라지고 응용 프로그램은 계속 실행됩니다.가장 일반적인 경우입니까?

저는 많은 시간 동안 자바 디자이너들이 프로그래머의 가장 일반적인 요구 사항을 충족시키기 위해 자바 동작을 처리하고 소중한 시간을 절약하는 등 많은 것을 읽었습니다. X 버튼을 클릭하면 응용 프로그램을 종료하는 것보다 일반적인 경우는 무엇입니까?

+2

악취를 더럽 힙니다. –

+0

@Stephen 질문 할 질문이 없습니다. 뭔가 잘못 됐어? 그리고 실제로 응답하지 않는 경우 왜 5p를 추가합니까? 또한 SO는 토론 게시판이나 포럼이 아니라는 것을 알고 있습니다. Q & A입니다. 그래서 당신은 대답하고 그렇게 말하거나 아무 말도하지 않습니다. –

답변

8

이유가 무엇이든 그것이 작동하는 방식과 프로그램을 원하는 방식으로 작동시키는 방법을 알고있는 한 실제로는 중요하지 않습니다.

추측 : 하나의 앱은 여러 개의 창을 가질 수 있으며, 하나의 창을 닫으면 그 중 하나가 종료 될 때 앱이 종료됩니다. 얼마나 많은 창문이 열리고 닫혔는지/숨겨져 있는지, 아직 보이지 않았는지, 그리고 마지막 창문이 닫혀있을 때 종료 할 수 있는지를 추적하는 것은 너무 많은 작업/너무 많은 가장자리 사례 등일 수 있습니다. 따라서 프로그래머는 우리에게 달려 있습니다. 우리가 앱을 나가기를 원할 때. 당신이 창 (JFrame의)가 닫힐 때 앱이 종료 할 경우 어떤 경우

, 당신은 단지 그렇게하도록 지시 할 수 있습니다

myJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
+3

+1입니다. –

7

많은 응용 프로그램은 한 번에 둘 이상의 창을 열고 하나의 창을 닫으면 전체 응용 프로그램을 종료하지 않아야합니다.

또한 대부분의 응용 프로그램은 종료 할 때 간단한 System.exit(0); 이상의 비트를 수행하려고합니다. 사용자에게 일부 파일을 저장하도록 (또는 자동으로 저장하도록) 요청할 수도 있고, 임시 파일을 정리하거나 원격 호스트에 종료 등을 알릴 수도 있습니다.

실제로 창을 닫으면 JVM이 끝나는 유일한 효과는 거의 없습니다.

+0

다시 작업을 수행하려면 다른 작업이있는 경우 개인적으로 처리하고 원하는 동작을 정의해야합니다. –

+5

@ Knowing : uhm ... 네, 그리고? 그것이 바로 현재 상태가 제공하는 것입니다 : 정의 된 기본 동작 (유용하다고 주장한)이 있습니다. 다른 것과 다른 것을 원한다면 그 코드를 작성해야합니다. –

+0

지금 동의합니다. 첫 번째 문장은 +1 –

0
myJFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

폐기 거의 항상 바람직하다. EXIT_ON_CLOSE을 명시 적으로 말하고 두 개 이상의 창을 표시하려면 DISPOSE_ON_CLOSE을 대신 사용하도록 코드를 수정해야합니다. 거대한 거래는 물론 더 나은 선택이 아닌 것 같습니다.

내 의견으로는 DISPOSE_ON_CLOSE가 HIDE_ON_CLOSE가 아닌 기본값이었습니다. 아 글쎄, 그게 우리가 가진거야. EXIT_ON_CLOSE는 System.exit (0) 호출을 윈도우 리스너에서 피해야하는 것과 같은 이유 때문에 피할 수 있습니다 (물론 그 자체로 잘못된 것은 없지만 나중에는 유연하지 않습니다).

프레임 수신기에 WindowListener를 연결하고 기본값을 JFrame.DO_NOTHING_ON_CLOSE 가까이 설정하는 것이 더 좋습니다. 이렇게하면 사용자가 작업을 저장할 것인지 묻는 메시지를 포함하여 응용 프로그램이 종료 될 때 제어 할 수 있습니다.

관련 문제