Java ProgressMonitorInputStream с использованием существующего JProgressBar - PullRequest
2 голосов
/ 05 декабря 2011

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

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

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

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

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

Я все делаю неправильно?

Любая информация будет принята с благодарностью.

Спасибо

1 Ответ

5 голосов
/ 05 декабря 2011

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

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

private JProgressBar bar = new JProgressBar();

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

this.add(bar);

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

bar.setValue(progress);
...