Я не понимаю, почему индикатор не двигается в следующем коде:Неопределенный JProgressBar Всплывающие/модальный диалог не передвигающиеся
JDialog dlgProgress = new JDialog(InterfaceYadis.frameInterface, "Veuillez patienter...", true);
JLabel lblStatus = new JLabel("Test");
JProgressBar pbProgress = new JProgressBar(0, 100);
pbProgress.setIndeterminate(true);
dlgProgress.add(BorderLayout.NORTH, lblStatus);
dlgProgress.add(BorderLayout.CENTER, pbProgress);
dlgProgress.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
//dlgProgress.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
dlgProgress.setSize(300, 90);
dlgProgress.setLocationRelativeTo(null);
SwingWorker<Void, Void> sw = new SwingWorker<Void, Void>() {
@Override
protected Void doInBackground() throws Exception {
Thread.sleep(2500);
return null;
}
@Override
protected void done() {
dlgProgress.dispose();
}
};
sw.execute();
dlgProgress.setVisible(true);
JDialog должен быть выполнен на UI потоке и индикатор выполнения должен перейти от слева направо ? Спасибо.
EDIT:
Проблема не в коде, прежде, я создал пользовательский JProgressBar и я модифицировал по умолчанию перекрашивать интервал и время цикла ... Пользовательского Jprogress садилось:
UIManager.put("ProgressBar.repaintInterval", new Integer(50));
UIManager.put("ProgressBar.cycleTime", new Integer(100));
Значение по умолчанию:
INTERVAL = UIManager.getInt("ProgressBar.repaintInterval"); // = 50
CYCLETIME = UIManager.getInt("ProgressBar.cycleTime"); // = 3000
Для меня, у меня есть два решения:
1/Я определил цикл и интервал каждый раз, чтобы быть уверенным, чтобы иметь правильные значения
2/Я использую тот же везде Progressbar
Я думаю, что решение 2 является лучшим, но я как знать, может ли решение быть хорошим решением.
JProgressBar установлен быть неопределенным - то, что вы думаете, что это делает? Сначала ознакомьтесь с руководством и API. –
'JDialog должен быть выполнен на потоке пользовательского интерфейса', а затем опубликовать соответствующий [SSCCE] (http://sscce.org/), который показывает, как вы это делаете. 'и индикатор выполнения должен перемещаться слева направо? - код работает отлично для меня, используя JDK8 в Windows 7. – camickr
Обычно JProgressBar не должен быть статическим. Я хочу, чтобы пациент был пользователем операции (неопределенное время) –