Спасибо большое за вашу помощь. Я получил это работает. Легенда.

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

Я пытался использовать Swingworker, но индикатор выполнения не обновляется. Я подозреваю, что я делаю что-то не так с моим потоком.

Моя кнопка, как определено в контроллере:

 class SearchBtnListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            _view.displayProgress();  
        }    
}

Это вызывает поиск в модели и имеет следующий вызов в представлении:

public void displayProgress() {

    TwoWorker task = new TwoWorker();
    task.addPropertyChangeListener(new PropertyChangeListener() {

         @Override
         public void propertyChange(PropertyChangeEvent e) {
             if ("progress".equals(e.getPropertyName())) {
                _progressBar.setValue((Integer) e.getNewValue());
             }
         }

     });
     task.execute();             
}      


private class TwoWorker extends SwingWorker<Void, Void> {        
    @Override
    protected Void doInBackground() throws Exception {
        _model.startSearch(getTerm());                  // time intensive code
        File file = new File("lock");           
        while (file.exists()){
            setProgress(_model.getStatus());
            System.out.println(_model.getStatus()); // never called
        }           
        return null;
    }  

    protected void done(){
        updateMain();
    }
}

Фиктивная функция, определенная в модели для тестирования:

public int getStatus(){
    Random r = new Random();
    return r.nextInt();
}

Ответы на вопрос(1)

Ваш ответ на вопрос