私はメソッドを持つクラスがある場合:JavaFX並行性:タスク内でオブジェクトメソッドを実行できますか?
class Car{
private String engineRPM;
public Car(){}
public String idleEngine(){
if (engineOn()){
engineRPM = getEngineRPM();
}
return engineRPM;
}
}
がどのように私はメインのバックグラウンドスレッドでタスクのメソッドを実行しないと、その戻り値を取り、GUIを更新しますか?
public class Main extends Application {
Car myCar;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception{
FXMLLoader loader = new FXMLLoader(getClass().getResource("fxml/entry.fxml"));
Parent root = loader.load();
this.mainController = (SystemMessage) loader.getController();
primaryStage.setTitle("Car");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
//perform background task of class method here
myCar = new Car();
myCar.startEngine();
String RPM = myCar.engineIdle(); //
this.mainController.postMessage(RPM);
}
あなたはそれを行うにはPlatform.runLater(Runnableを...)を使用することができます。これをチェックしてください:https://stackoverflow.com/questions/13784333/platform-runlater-and-task-in-javafx – Serge
@Serge 'Platform.runLater(...)は'ない上、FXのアプリケーションスレッドで何かを実行しますバックグラウンドスレッド。ですから、UIの最後にはPlatform.runLater(...)を使用してください。コメントからは分かりません。 –
@James_Dはい、これは私が言ったことです。ご注意ください。 – Serge