Индикаторы выполнения задач Java в Swing

Мне нужен очень простой (скелетный) учебник по индикаторам выполнения для разработки графического интерфейса на Java. Индикатор выполнения может быть "неопределенным" и в идеале иметь обновляемую текстовую метку.

Вот некоторый скелетный код, который, я надеюсь, кто-то сможет расширить, чтобы он заработал.

class MyFunView extends FrameView {

  // class vars and other stuff...

  @Action
  public void excitingButtonPressed() {

     /* I have n files to download */
     // Download file 1, set progress bar status to "downloading file 1"
     // ...
     // Download file n, set progress bar status to "downloading file 2"

  }

} 

В основном, как и во что обернуть мой код загрузки? (Я так понимаю, что нужен какой-то подкласс Task?)

Большое спасибо заранее.

РЕДАКТИРОВАТЬ:

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

2 ответа

Решение

Мне нужен очень простой (скелетный) учебник по индикаторам выполнения для разработки графического интерфейса на Java.

Вы можете использовать SwingWorker в сочетании с JProgressBar.

Другой альтернативой является выполнение вашей задачи (например, Runnable) и периодически обновлять JProgressBar, Остерегайтесь, однако, что в Swing любые манипуляции с пользовательским интерфейсом должны выполняться на EDT. SwingWorker имеет хорошее свойство заботиться об этой детали. Ваше собственное решение придется использовать SwingUtilities.invokeLater,. например:

SwingUtilities.invokeLater(new Runnable() {
    public void run() {
        progressBar.setValue(progressCounter++);
    }
});

Много кода для глупости, не так ли? Может быть SwingWorker с PropertyChangeListener лучшее решение в конце концов...

Другие вопросы по тегам