做我有這樣的代碼:GUI卡住如果循環內EDT
Thread T=new Thread(new Runnable(){
public void run(){
SwingUtilities.invokeLater(new Runnable(){
public void run(){
for (int i=0;i<18;i++){
int percent=(int)(((i+1)*100)/18);
try {
lblNewLabel.setText("Loading... ("+percent+"%)");
Thread.sleep(1000);
}
catch (Exception e) {
e.printStackTrace();
}
}
}
});
}
});
我的問題是,我的標籤不會改變它的文本此線程盯着之後,反而會留在舊文本(在此代碼標籤上加上「加載...(0%)」文本)。 有沒有辦法避免這麼做?
然後......如果我叫了invokeLater只在我的setText調用是這樣的:
SwingUtilities.invokeLater(new Runnable(){
public void run(){
lblNewLabel.setText("Loading...("+percent+"%)");
}
});
它會被稱爲18倍。這是一個好方法嗎?或者最好不要調用invokeLater方法那麼多次?
謝謝
好像你已經使用了'爲「事件分派線程」 edt'標籤,但實際上不是什麼它是。看看[這裏](http://stackoverflow.com/tags/edt/info)。我編輯刪除它從這個問題(將在審查後可見)。 – Lii
特赦,不知道。 –