做我有这样的代码: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
特赦,不知道。 –