Обновление индикатора выполнения максимум после запуска задачи - PullRequest
0 голосов
/ 08 мая 2019

Я ищу подход для обновления максимального значения индикатора выполнения.Я хотел бы использовать индикатор прогресса, если это правильный способ сделать это.Что я настроил ниже

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 не будет работать, потому что задача еще не закончена.Я потратил большую часть дня, пытаясь заставить этот индикатор выполнения работать.Любая помощь или изменение направления будет принята с благодарностью!

1 Ответ

0 голосов
/ 08 мая 2019

Комментарий выше работал отлично!

...