我想在新的JDialog中創建JProgressBar,女巫將在與主邏輯分離的線程中。所以我可以通過創建新的JDialog開始不確定的進展,並通過處理JDialog來完成這一進程。但它讓我很難實現這一點,因爲在JDialog出現之後,直到主線程(SwingUtilities)中的邏輯完成後才顯示任何組件(包括JProgressBar)。JProgressBar在新線程中JDialog
主題包括的JDialog:
package gui.progress;
public class ProgressThread extends Thread {
private ProgressBar progressBar = null;
public ProgressThread() {
super();
}
@Override
public void run() {
progressBar = new ProgressBar(null);
progressBar.setVisible(true);
}
public void stopThread() {
progressBar.dispose();
}
}
的JProgressBar切換方法:
private static ProgressThread progressThread = null;
...
public static void toggleProcessBar() {
if(progressThread == null) {
progressThread = new ProgressThread();
progressThread.start();
} else {
progressThread.stopThread();
progressThread = null;
}
}
不要調用Swing代碼關閉[EDT(http://en.wikipedia.org/wiki/ Event_dispatching_thread)。 – predi
查看[這個答案](http://stackoverflow.com/questions/8916721/java-swing-update-label/8917565#8917565)舉例 – Robin
聽起來像你需要一個[ProgressMonitor](http:// docs。 oracle.com/javase/7/docs/api/javax/swing/ProgressMonitor.html),以及一些[如何使用它的示例](http://docs.oracle.com/javase/tutorial/uiswing/components/ progress.html) –