Я хотел бы сделать JProgressBar в новом JDialog, ведьма будет в отдельном потоке от основной логики. Поэтому я могу начать неопределенный прогресс, просто создав новый JDialog и завершая этот прогресс с удалением JDialog. Но мне сложно это сделать, потому что после появления JDialog он не показывает никаких компонентов (включая JProgressBar) до тех пор, пока не будет выполнена логика основного потока (SwingUtilities).JProgressBar в новой теме JDialog
Thread включая 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;
}
}
Никогда не называйте свинг код отключения [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) –