2013-09-22 62 views
0

我在另一個類中有一個標籤,並且我正在更改另一個組件的動作中該標籤的文本。反正我已經試過類似的Thread.sleep(300),甚至在它的延遲實現我自己的方法一樣文本不會延遲變化

private void waitTime(long WaitTime){ 
     long waitUntil = System.currentTimeMillis() + WaitTime; 
     while(System.currentTimeMillis() != waitUntil); 
    } 

它工作得很好,但文中的延遲之前並沒有改變。有沒有其他的延遲,文本實際上會改變,然後延遲?

if(frame.Index == 10){ 
     frame.label.setText("Wow, you're more patient then I am, you win."); 
     waitTime(3000); 
     if(frame == null) return; 
     System.exit(1); 
} 
+0

1)請學習常見的[Java命名約定](http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html#73307)(特別是用於名稱)的類,方法和屬性名稱並一致使用它們。 2)爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 3)哪個GUI工具包? Swing,AWT,Java-FX,GWT,SWT,Android ..? –

回答

2
  • 你把Swing事件線程,因此整個應用程序與Thread.sleep(...)睡覺。所以你不想在Swing事件線程(也稱爲Event Dispatch Thread或EDT)上使用它。
  • 相反,使用定時器,而不是一個Thread.sleep(...)
  • 另一種方法是在用戶拋出的JOptionPane與所需信息,然後從你的應用程序時,JOptionPane的回報退出。這樣可以保證用戶在應用程序退出之前至少看到了選項窗格和希望的消息。