2014-12-02 44 views
1

好吧,所以基本上我試圖做的是加載我的GUI與三個按鈕,「清除」,「計算」和「退出」。通過一個無限循環,當我按Calculate時,我希望它打破循環。我有按鈕功能的代碼,但當我按下退出之前,我按下計算我得到一個NullPointerException(該按鈕仍然關閉GUI,但我得到一個錯誤)。爲了擺脫這個錯誤,我必須做些什麼?如何用多個按鈕保持無限循環?

這裏是我的代碼:

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

while(true)比(;;) – 2014-12-02 17:55:53

+1

更好的形式一些編譯器在while(true)時產生警告。這是避免警告的一種方法。 – 2014-12-02 17:58:25

+0

@JamesHutchinson他們完全相同。爲什麼會比另一個更好? – 2014-12-02 18:02:25

回答

0

我認爲這將解決您的NPE錯誤:

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

啊哈,那正是我在找的東西。非常感謝你。 – Xellic 2014-12-02 18:02:20

+0

任何時間花花公子:) – 2014-12-02 18:02:55

0

如果你看一下documentation,你會看到使用的BasicForm.close()釋放資源表格,並且表格不應該在此後使用。但是,在您退出後,您的循環會重新啓動,並且您嘗試再次撥打form.accept()

當你處理Quit時,你需要跳出循環。

+0

是的,我只是不太確定如何擺脫循環。沒有想到使用布爾值並在使用form.close()時將其殺死。 , 感謝您的幫助 – Xellic 2014-12-02 18:06:46