Java ProgressMonitorInputStream с использованием существующего JProgressBar

Я просто играю с ProgressMonitorInputStream Java для мониторинга данных, когда они проходят через BufferedInputStream. Вот код, который я сейчас пытаюсь:

InputStream in = new BufferedInputStream(
     new ProgressMonitorInputStream(
     new JFrame(),"Scanning",new FileInputStream(dir.getSearchInputFile())));

Это прекрасно работает, и появляется новое окно JFrame с индикатором выполнения, который отображает ход потока ввода.

Есть ли способ получить ProgressMonitorInputstream для обновления существующего JProgressBar, существующего в другом JFrame?

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

Я все об этом ошибаюсь?

Любой вклад будет принята с благодарностью.

Спасибо

1 ответ

Решение

SwingWorker чей прогресс отслеживается, не важно, кто слушает. Просто реализуйте PropertyChangeListener интерфейс в другом кадре и добавить слушателя к работнику, как показано в ProgressMonitorDemo,

Приложение: В качестве конкретного примера, добавьте индикатор прогресса в демо:

private JProgressBar bar = new JProgressBar();

Добавьте его в конструктор панели:

this.add(bar);

Обновите его в панели propertyChange() слушатель:

bar.setValue(progress);
Другие вопросы по тегам