2012-03-02 3 views
0

У меня есть следующий код:После нажатия кнопки, как подождать завершения SwingWorker до продолжения?

public class FileLoader extends SwingWorker(Void, Void) { 
    @Override 
    private Void doInBackground() { 
     loadFiles(); 
    } 
} 

public class LogInPage { 

    private FileLoader fileLoader = new FileLoader(); 

    public LogInPage() { 
     fileLoader.execute(); 
    } 

    loginButtonActionPerformed(ActionEvent evt) { 
     //wait for files to finish loading 
     //while displaying a waiting cursor 

     showMainForm(); 
    } 
} 

Мой вопрос будет:

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

Я сделал это раньше с присоединением Thread(), но не смог сделать то же самое с SwingWorker.

Я прочитал об переопределении done() и выполнении прослушивателей, но я не могу применить его здесь.

Любая помощь?

Спасибо.

ответ

0

От того, что вы говорите, и вопреки тому, что вы думаете, я думаю, вы можете использовать метод done() SwingWorker. Перед выполнением() отключите кнопку, запустите оживленную анимацию, что угодно, а затем в методе done() сделайте все, что вам нужно, чтобы продолжить программу. Вот для чего :-)

Вы также должны посмотреть на SwingWorker.publish() и process() для отправки и получения событий индикатора выполнения.

См. Также: How do I wait for a SwingWorker's doInBackground() method?

Смежные вопросы