如果我有方法的類: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