2016-02-14 89 views
1

我想添加延遲顯示textArea中的文本。我使用Thread.sleep方法,但它不能正常工作。如何在顯示文本時在JTextArea中添加延遲?

for(int i=0; i<3; i++) { 
    textArea.append(" ."); 
    Thread.sleep(2000); 
} 

這部分代碼位於按鈕的actionListner中。當按下按鈕時,textArea中每個點顯示一個點(。),每個點延遲2秒,但循環無法正常工作。當我運行代碼時,程序首先等待6秒鐘,然後在textArea中立即顯示整個輸出。

但是,如果我在GUI以外的簡單Java類中使用這部分代碼,那麼它工作得很好。

請幫我,我該怎麼做?

+2

https://docs.oracle.com/javase/7/docs/api/javax/swing/SwingWorker.html – Idos

+1

發表多一點的代碼,我們至少需要看到該方法.. –

+1

[如何使用Swing Timers](http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html) - [舉例](http://stackoverflow.com/questions/15957845/java-i-cant-運行jtextarea-multiple-times/15957975#15957975) – MadProgrammer

回答

1

您可以使用定時器,所有你需要做的是:

1)導入

import javax.swing.Timer; 

2)用自己的行動監聽

private int i = 0; 
private Timer tmr = new Timer(2000, new ActionListener() { 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     textArea.append(" ."); 
     ++i; 
     if(i >= 2) 
      tmr.stop(); 
    } 
}); 

3)啓動初始化定時器:

tmr.start(); 

這應該工作。 讓我知道是否有任何問題。

+0

它的工作原理。謝謝你的時間。 – MSS