Java SwingWorkerクラスに相当するJavaFXはありますか?JavaFX SwingWorker相当ですか?
私はJavaFX Taskを認識していますが、文字列メッセージまたは進捗状況だけを公開することができます。私はちょうど私が(任意のタイプのメッセージを公開して)SwingWorkerでやったように、GUIスレッドでメソッドを呼びたいと思っています。
相続人は、私が何を意味するかの例です:
class PrimeNumbersTask extends
SwingWorker<List<Integer>, Integer> {
PrimeNumbersTask(JTextArea textArea, int numbersToFind) {
//initialize
}
@Override
public List<Integer> doInBackground() {
while (! enough && ! isCancelled()) {
number = nextPrimeNumber();
publish(number);
setProgress(100 * numbers.size()/numbersToFind);
}
}
return numbers;
}
@Override
protected void process(List<Integer> chunks) {
for (int number : chunks) {
textArea.append(number + "\n"); // HERE: execute in GUI thread
}
}
}
ソリューション
あなたの答えをありがとうございました。私が探していた解決策はPlatform.runLater(Runnable guiUpdater)です。
私はすでにその解決策について考えていましたが、回避策に似ているようです(okですが、すべての場合にそうではありません)。 Platform.runLater()メソッドは、まさに私が探していたものです。 – Crine
タスクの新規インスタンスを作成しただけで、PrimeNumbersTaskのバックグラウンド作業を開始しませんでした。私はそれをスレッドに入れて起動する必要があると思います。さもなければ、task.run()を呼び出すだけでGUIがブロックされていれば、私は行を追加することができます:new Thread(task).start();これがいいのかどうか教えてください – Ewoks