2014-12-02 1 views
1

좋아, 기본적으로 내가하고 싶은 것은 "Clear", "Calculate", "Quit"의 세 가지 버튼으로 GUI를로드하는 것이다. 무한 루프를 통해 Calculate를 누르면 루프가 깨지기를 원합니다. 단추 기능을위한 코드가 있지만 Calculate를 누르기 전에 Quit 키를 누르면 NullPointerException이 발생합니다 (단추는 여전히 GUI를 닫지 만 오류가 발생 함). 이 오류를 없애려면 어떻게해야합니까? 당신이 documentation 보면여러 개의 버튼으로 무한 루프를 유지하는 방법은 무엇입니까?

form = new BasicForm("Clear", "Calculate", "Quit"); 
buildForm(); 
boolean quitCalled=false; 

for (; ;) { 
button = form.accept(); 

switch(button) { 

case 0: 
    form.clearAll(); 
    break; 

case 1: 
    // calculate code goes here 
    break; 

case 2: 
    form.close(); 
    quitCalled = true; 
    break; 
} 
if(quitCalled) 
{ 
break; 
} 
} 
+0

(true)는 (;;)보다 더 좋은 형태입니다 –

+1

일부 컴파일러에서는 while (true)에 대한 경고를 생성합니다. 경고를 피하는 방법입니다. –

+0

@JamesHutchinson 그들은 정확히 같습니다. 왜 다른 사람보다 나은 사람이 있을까요? –

답변

0

: 여기

내 코드입니다 그 양식은 양식은 이후 사용해서는 안됩니다. 그러나 Quit을 치면 루프가 다시 시작되고 form.accept()에 다시 전화를 걸려고합니다.

종료를 처리 할 때 루프를 벗어나야합니다.

+0

아하, 그게 내가 찾고 있던 바로 그거야. 고맙습니다. – Xellic

+0

언제든지 :) –

0

, 당신은 BasicForm.close() 해제 자원에 의해 사용되는 것을 볼 수 있습니다 :이 당신의 NPE 오류를 해결할 생각

form = new BasicForm("Clear", "Calculate", "Quit"); 
buildForm(); 


for (; ;) { 
    button = form.accept(); 

    switch(button) { 

    case 0: 
     form.clearAll(); 
     break; 

    case 1: 
     // calculate code goes here 
     break; 

    case 2: 
     form.close(); 
     break; 
    } 
} 
+0

그래, 나는 그저 루프를 벗어나는 방법을 너무 확신하지 못했습니다. boolean을 사용하여 form.close()를 사용할 때 그것을 죽이는 것을 생각하지 않았습니다. 도와 줘서 고마워. – Xellic