1
我對這個作品的JFrame的代碼,將顯示用戶在圖片的導入時間進度:爲什麼我的JFrame不更新
public class LoadFrame implements Runnable {
JProgressBar progressbar;
JPanel loadpanel;
MainScreen mainscreen;
int progress;
JDialog mainloadframe;
public LoadFrame(String operation) {
mainloadframe = new JDialog();
JLabel operationlabel = new JLabel(operation);
progressbar = new JProgressBar(0, 100);
loadpanel = new JPanel();
mainloadframe.setSize(300, 75);
mainloadframe.setLocationRelativeTo(null);
mainloadframe.setLayout(new GridLayout(1, 2));
mainloadframe.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
mainloadframe.setAlwaysOnTop(true);
mainloadframe.setTitle(operation);
mainloadframe.setVisible(true);
progressbar.setValue(0);
progressbar.setStringPainted(true);
loadpanel.add(progressbar);
loadpanel.add(operationlabel);
mainloadframe.add(loadpanel);
}
public void setMainScreen(MainScreen mainscreen) {
this.mainscreen = mainscreen;
}
public void disposeLoadFrame() {
mainloadframe.dispose();
}
public void setProgress(int progress) {
this.progress = progress;
}
@Override
public void run() {
while (progress != 100) {
progressbar.setValue(progress);
}
}
}
進步的實際計算還處於完成線程,但出於某種原因,在圖像完成導入之前,進度條不會顯示在JFrame上。我很確定這是一個線程問題,但我似乎無法弄清楚。一點幫助,將不勝感激。
UI更新調用
progressbar.setValue(progress);
對EDT的情況發生。從任何其他線程做到這一點是未定義的行爲,並導致任何東西從不穩定的繪圖,錯誤的控制彈出各地,正常工作,根本不工作。 – Joey 2013-05-10 14:04:57