Панель, появляющаяся до того, как метод выполнения SwingWorker завершит свою задачу - PullRequest
1 голос
/ 03 апреля 2012

Я пишу событие для кнопки. В этом я использовал Swingworker так, как я использую метод execute в этом коде кнопки. Все работает нормально, но проблема в том, что я хочу отобразить панель сразу после метода execute Закончено. Что происходит, так это то, что панель появляется до того, как метод execute завершает свою задачу. Вот мой код. Пожалуйста, помогите мне показать панель, как только метод execute завершает свою задачу

               Main f2=new Main();
               f2.getfile(FileName,0);
               f2.execute();
               Panel.setVisible(true);
               Panel.setSize(815, 587);

изм: Ну, я нашел решение, для этого, если кто-то сталкивается с той же проблемой. Я создал метод (вызовите его showPanel) в классе GUI, и когда вызывается метод done SwingWorker, то в этом методе done я вызываю метод showPanel для показа панель.

1 Ответ

2 голосов
/ 03 апреля 2012

SwingWorker выполняет свою работу в другом Thread (называемом рабочим потоком в классе javadoc), а затем в EDT, и позволяет обновлять поток диспетчеризации событий во время / после его выполнения.

Причинапочему ваша панель становится видимой до завершения выполнения метода, ясно указано в Javadoc класса класса SwingWorker, который необходимо прочитать:

Выполнение () метод вызывается в этой теме.Он планирует SwingWorker для выполнения в рабочем потоке и немедленно возвращает

См. этот ответ для примера использования SwingWorker или обратитесь к учебнику по Swing для параллелизма для получения дополнительной информации.

...