2015-10-17 110 views
0

所以我有一個大小爲10的JButtons的數組,並且所有的文本都在「 」內,例如我點擊按鈕[0],假設我想增加按鈕內的值[1] - [7](我已經這樣做了),但我如何添加延遲時間,使我看起來像一個動畫,而不是當我點擊按鈕[0]時,所有其他按鈕的值立即改變。如何在GUI中添加延遲時間java

我試圖用其他的代碼,我發現這裏的堆棧溢出,如Thread.sleep代碼(1000),而這個鏈接

http://best-programming-tricks.blogspot.com/2011/07/how-to-make-loading-delay-time-in-java.html

,當我試圖在我的代碼,該GUI剛剛進入一個滯後然後更改值。它不會做我想做的事情

謝謝

,這裏是我的ActionListener

buttons[0].addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 
       int i = Integer.parseInt(buttons[0].getText()); 
       setValuetoZero(0); 
       int delay = 1000; 
        for(int a =1; a<= i; a++){ 
         int getVal = Integer.parseInt(buttons[a].getText()); 
         getVal++; 
         String newVal = Integer.toString(getVal); 
         buttons[a].setText(newVal); 
        } 
       } 

      }); 

回答

1

也許你可以使用javax.swing.Timer中的一個例子。您給構造函數一個ActionLitener以給定的時間間隔被調用。你可以把它想象成一個在每個時間間隔都被按下的隱藏按鈕。

http://docs.oracle.com/javase/7/docs/api/javax/swing/Timer.html

休眠狀態的原因造成滯後,這是導致該GUI運行在睡覺的線程。這意味着GUI在睡眠時無法響應輸入。爲了讓線程進入休眠狀態,您需要啓動另一個線程並處理其與GUI的數據訪問同步,這對您來說可能比您的操作更麻煩。這就是爲什麼Timer很好。它不會中斷GUI並在與GUI相同的線程中執行其ActionListener。

+0

我可以將此添加到我的for循環嗎? –

+0

不,我想你會想把for循環放到actionPerformed函數中,這個函數會被定時器調用。 – chasep255

+0

是我的for循環在actionPerformed函數內 –