Я ищу подход для обновления максимального значения индикатора выполнения.Я хотел бы использовать индикатор прогресса, если это правильный способ сделать это.Что я настроил ниже
final JDialog dialog = new JDialog(frame, "Progress Dialog", true);
progressBar = new JProgressBar(0, 500);
progressBar.setIndeterminate(false);
dialog.add(BorderLayout.CENTER, progressBar);
dialog.add(BorderLayout.NORTH, new JLabel("Progress..."));
dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); dialog.setSize(300, 75);
dialog.setLocationRelativeTo(frame);
В настоящее время я не знаю, каким будет максимум для индикатора выполнения.В блоке ниже бегун является подклассом SwingWorker.Только после того, как этот процесс запустится, я знаю, какой максимум будет для индикатора выполнения.
// run the report in its own thread
try {
runner = ReportFactory.create(reportName, startDate, endDate);
runner.addPropertyChangeListener(progressListener);
runner.execute();
} catch (Exception e1) {
logger.error(e);
System.exit(1);
}
Я попытался сделать это позже и без вызова.
private class ProgressListener implements PropertyChangeListener {
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (runner.getProgress() == 0) {
// SwingUtilities.invokeLater(new Runnable() {
// public void run() {
progressBar.setMaximum(runner.getMaximumProgressSize());
// }
// });
}
progressBar.setValue(runner.getProgress());
}
}
Для меня invokeLater не будет работать, потому что задача еще не закончена.Я потратил большую часть дня, пытаясь заставить этот индикатор выполнения работать.Любая помощь или изменение направления будет принята с благодарностью!