スレッドの使用に関していくつか質問したいのですが。私はそれらの投稿から提案された多くの投稿とリンクを見てきましたが、それでも空白になりました。いくつかのクラスがあるNetBeansプロジェクトがあります。そのうちの1つは、ボタンをクリックするだけでいくつかの処理が実行されるGuiクラスです。GUIから、別のクラスのインスタンスを呼び出し、次に他のクラスを呼び出します。これらのクラスの1つは、SparqlクエリをTDBバックエンドデータベースに送信します。今のところ、すべての出力はファイルに保存されます。
私がやりたいのは、どういうわけか、Guiから呼び出されたクラスを別のスレッドで実行するようにし、呼び出されたクラスの1つ以上からGuiのEditorPaneとTextAreaを更新できるようにすることです。これまで、Guiクラスのインスタンスを呼び出して、その中でパブリックメソッドを使用しようとしましたが、これは機能しません。インスタンスをGuiと呼んでいます
Gui gui = new Gui();
gui.setEditorPaneText("File name is: " + fn);
そして、Guiクラスのメソッドは
public void setEditorPaneText(final String string) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
setString(string);
EditorPane.setText(getString());
EditorPane.repaint();
}
});
}
デバッガーを実行しようとしましたが、メソッド内のコードを処理せずに、メソッドの最初の行から最後の中括弧まで処理がスキップされます。私のGuiクラスには、メインメソッドとして次のものがあります。コメントされた部分は、この問題に関する多数の投稿を読んでいるときに変更したイベントキューの以前のバージョンでした。
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Gui().setVisible(true);
throw new UnsupportedOperationException("Not supported yet.");
}
});
}
以下は、この問題に関するいくつかの投稿を読んだ後に置き換えたmainメソッドの以前のコードです。
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Gui().setVisible(true);
}
});
役立つ情報をいただければ幸いです。ありがとうございました。