Почему код подключаемого модуля Eclipse не может вызывать рабочий поток из внешнего Java-приложения Swing? - PullRequest
0 голосов
/ 29 марта 2011

Я реализовал отдельное Java-приложение, которое использует платформу Swing для GUI. В составе GUI есть JTextArea, который появляется после нажатия кнопки, и некоторый текст добавляется в jtextarea после обработки задания в на заднем плане. Я использую библиотеку SwingWorker, так как я не хочу, чтобы моя jtextarea зависала в приложении, и она отлично работает. Так что код задания находится внутри переопределенного doInBackground.

Проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю это приложение с графическим интерфейсом как часть плагина Eclipse. Я собрал флягу с моим приложением Swing и добавил расширение в рабочую среду Eclipse. В начале приложение запустилось. правильно, но когда поток приложения переходит к точке, в которой должен вызываться swingworker, эта конкретная jtextarea зависает и ничего не происходит. Кажется, что код внутри функции doInBackground () моего Swingworker не вызывается. Я запускаю приложение внутри кода Eclipse Pugin, как показано ниже:

SwingUtilities.invokeLater(new Runnable() {public void run() {
              new MainFrame.setVisible(true);
          }
      });

где MAinFrame - это класс JFrame java-программы. Вы знаете, почему это происходит?

Ответы [ 2 ]

1 голос
/ 29 марта 2011

Нелегко смешивать SWT и AWT / Swing UI в одном процессе. Они требуют разных циклов событий. Ваш код зависает, потому что цикл событий Awt / Swing не запущен в процессе Eclipse. Вы можете либо переписать свой пользовательский интерфейс в SWT, либо исследовать мост SWT-AWT. Мост "работает", но имеет множество глюков. Это действительно подходит только для ситуации, когда существует огромное количество AWT / Swing и временное решение необходимо, пока пользовательский интерфейс портирован на SWT.

0 голосов
/ 29 марта 2011

Вы пытались вызвать вашу внешнюю программу с помощью Runtime.exec ()?

Как вы, возможно, знаете, смешивание Eclipse SWT / Jface и Swing - сложная тема.

...