Multithreading JAVAFX线条图线程

Multithreading JAVAFX线条图线程,multithreading,javafx,linechart,Multithreading,Javafx,Linechart,帮助我了解折线图以及如何做得更好。 我需要添加一个折线图2-3,30的时间表-从数据库中获取的值。我想创建一个单独的流,但是有错误 错误:“线程“thread-4”中出现异常 java.lang.IllegalStateException:不在FX应用程序线程上; 当前线程=线程-4“” 导入extfx.scene.chart.DateAxis; 导入javafx.application.application; 导入javafx.concurrent.Task; 导入javafx.event.

帮助我了解折线图以及如何做得更好。 我需要添加一个折线图2-3,30的时间表-从数据库中获取的值。我想创建一个单独的流,但是有错误

错误:“线程“thread-4”中出现异常 java.lang.IllegalStateException:不在FX应用程序线程上; 当前线程=线程-4“”

导入extfx.scene.chart.DateAxis;
导入javafx.application.application;
导入javafx.concurrent.Task;
导入javafx.event.ActionEvent;
导入javafx.event.EventHandler;
导入javafx.scene.scene;
导入javafx.scene.chart.LineChart;
导入javafx.scene.chart.NumberAxis;
导入javafx.scene.chart.XYChart;
导入javafx.scene.control.Button;
导入javafx.scene.layout.BorderPane;
导入javafx.stage.stage;
导入java.util.Date;
导入java.util.GregorianCalendar;
公共类主扩展应用程序{
公共静态void main(字符串[]args){
发射(args);
}
公共静态线条图线条图;
公共静态线程threadInTrendFlow;
@凌驾
public void start(Stage primaryStage)引发异常{
primaryStage.setTitle(“--------------------------”);
NumberAxis NumberAxis=新的NumberAxis();
DateAxis DateAxis=新的DateAxis();
线形图=新线形图(日期轴、数字轴);
lineChart.getData().add(scFlow.series);
BorderPane=新的BorderPane();
窗格。设置中心(折线图);
///
按钮inLineChart=新按钮(“插入”);
setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
已加载任务=新的scFlow();
threadInTrendFlow=新线程(已加载);
threadInTrendFlow.start();
}
});
窗格。setTop(内联图);
场景=新场景(窗格,800600);
初级阶段。场景(场景);
primaryStage.show();
}
}
调用应用程序线程上的内容时使用Platform.runlater(()->{})

有很多线程与类似的问题有关。只需搜索多线程javafx

import extfx.scene.chart.DateAxis;
import javafx.application.Application;

import javafx.concurrent.Task;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;

import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

import java.util.Date;
import java.util.GregorianCalendar;

public class main extends Application{
    public static void main(String[] args) {
        launch(args);
    }

    public static LineChart<Date, Number> lineChart;
    public static Thread threadInTrendFlow;
    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("-----------------------");

        NumberAxis numberAxis = new NumberAxis();
        DateAxis dateAxis = new DateAxis();
        lineChart = new LineChart<Date, Number>(dateAxis,numberAxis);

        lineChart.getData().add(scFlow.series);

        BorderPane pane = new BorderPane();
        pane.setCenter(lineChart);
        ///
        Button inLineChart = new Button("insert");
        inLineChart.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                Task<Void> loaded = new scFlow();
                threadInTrendFlow = new Thread(loaded);
                threadInTrendFlow.start();
            }
        });
        pane.setTop(inLineChart);
        Scene scene = new Scene(pane,800,600);
        primaryStage.setScene(scene);
        primaryStage.show();

    }
}