2014-04-22 207 views
-1

這是我的代碼 - 當我嘗試運行該程序時,它不會打印/顯示到我的GUI中的finalResult文本字段。有任何想法嗎?爲什麼我的程序不能打印到我的GUI?

private void calculateButtonActionPerformed(java.awt.event.ActionEvent evt) {             
    // Coding: 

    int a = 1; 

    userInput = minInput.getText(); 
    int value1 = Integer.parseInt(userInput); 

    userInput2 = maxInput.getText(); 
    int value2 = Integer.parseInt(userInput2); 


    while (a <= value1) 
    { 
     //Print numbers inbetween user's value and 1: 

     int square = value1*value1; 

     //Print: 
     finalResult.setText("" + square); 

     //Modifier: 
     value1 = value1 + 1; 

    } 

    for (a = 0; a <= value1; a ++) 
    { 
     finalResult.setText("" + a*a); 
    } 


    while (value1 < value2) 
    { 
     //Print numbers inbetween value 2 and valeu1: 

     int square = value2*value2; 

     //Print: 
     finalResult.setText("" + square); 

     //Modifier: 
     value2 = value2 + 1; 

    } 

    for (a = 0; a <= value2; a ++) 
    { 
     finalResult.setText("" + a*a); 
    } 
+0

只是爲了確保,要添加監聽器的按鈕嗎? – DeadChex

+0

好吧我會在這裏聽起來像一個白癡,並問你一個可能愚蠢的問題:通過聽衆你是指像Integer.parseInt或其他(我的課程是不是很豐富)編輯:我研究了它位,你的意思是像ActionListener – user3561829

回答

0

您的代碼正在工作,但那些for循環循環非常快,所以您看不到文本字段發生更改。無論你做什麼,都不要用Thread.sleep(...)來解決這個問題,而是考慮使用Swing Timer代替那些for循環,這樣你就可以看到中期結果。


編輯
看起來這個循環將永遠不會結束:

while (a <= value1) 

當會永遠>值1循環的內部?

下一個while循環可能會出現同樣的問題。

+0

好吧,謝謝,但我到底會如何使用擺動計時器?現在看起來是這樣的代碼是不工作的,因爲當我點擊我的GUI中的「計算」按鈕時,它會「卡住」(我很不擅長) – user3561829

+0

@ user3561829:如果卡住了,你的while循環之一不會停止。至於如何使用Swing Timer,我建議你使用Google'Java Swing Timer Tutorial',第一次點擊會幫助你。同樣爲了調試你的代碼,並且看看是否發生了一個無限的或長時間運行的循環,在那裏放置一些println語句。至於''我很不擅長這個'',練習會讓你更好。 –

+0

@ user3561829:請參閱編輯以回答。 –

0

如果你想看到所有的輸出,請嘗試使用只讀JTextArea這樣的:

javax.swing.JTextArea outputBox = new JTextArea(); 
outputBox.append("" + square + "\n"); 
相關問題