GUI 用のスイング フレームワークを使用するスタンドアロンの Java アプリケーションを実装しました。GUI の一部として、ボタンがクリックされた後に表示される JTextArea があり、ジョブがバックグラウンドで処理された後に jtextarea にテキストが追加されます。 jtextareaでアプリをフリーズさせたくないので、SwingWorkerライブラリを使用していますが、完全に機能します。したがって、ジョブコードはオーバーライドされたdoInBackground内にあります。
私が直面している問題は、この GUI アプリケーションを Eclipse プラグインの一部として起動するときです。swing アプリで jar を作成し、Eclipse ワークベンチに拡張機能を追加しました。最初はアプリが適切に起動しましたが、アプリケーション フローは、swingworker が呼び出されるポイントに進みます。この特定の jtextarea はフリーズし、何も起こりませんでした。Swingworker の doInBackground() 関数内のコードが呼び出されていないようです。以下のように、Eclipse pugin コード内でアプリを起動しています。
SwingUtilities.invokeLater(new Runnable() {public void run() {
new MainFrame.setVisible(true);
}
});
MAinFrame は、Java プログラムの JFrame クラスです。なぜこれが起こっているのか知っていますか?