Java индикатор выполнения для одновременной работы с кодом приложения - PullRequest
0 голосов
/ 11 февраля 2012

Я новичок в Java. Поэтому, пожалуйста, дайте мне знать, как я могу одновременно запустить индикатор выполнения и код моего приложения. Другими словами, я хочу, чтобы мой индикатор выполнения увеличивался, пока код моего приложения выполняет некоторую обработкуПожалуйста, уточните это с кодом.Я думаю, что мне нужно добавить два потока одновременно. Один поток обновляет поток прогресса, но я не уверен, является ли он правильным или нет.я написал этот код для увеличения индикатора выполнения (жестко)

       class ProgressMonitor implements Runnable {

    public void run() {
        jProgressBar1.setStringPainted(true);
        //run untill 100% complete
        while (progress < 100) {
            //update the progressbar
            jProgressBar1.setValue(++progress);
            jProgressBar1.repaint();
            try {

                //Sleep for .25 second
                Thread.sleep(250);
            } catch (InterruptedException ex) {
            }
        }

    }   

Ответы [ 3 ]

3 голосов
/ 11 февраля 2012

Проблема в основном в том, что долго выполняющаяся задача блокирует поток обработки событий, который обновляет графический интерфейс. Одним из решений является выполнение работы в SwingWorker.

Абстрактный класс для выполнения длительных задач GUI-взаимодействия в фоновом потоке. ..

См. Также урок Параллелизм в Swing данного руководства для получения более подробной информации.

1 голос
/ 12 февраля 2012

Решение действительно заключается в использовании SwingWorker.Если вы хотите использовать в комбинации с JProgressBar, я бы рекомендовал взглянуть на учебник JProgressBar , в котором есть пример использования SwingWorker в сочетании с JProgressBar.Или вы делаете быстрый поиск на этом сайте и находите примеры типа this

0 голосов
/ 11 февраля 2012

Подробнее об этом и SwingWorker вы можете узнать в этой теме:

Управление GUI и EDT в многозадачном приложении

...