Индикаторы выполнения задач 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
лучшее решение в конце концов...