2016-02-10 4 views
0

Помогите мне реализовать линейный график и как сделать лучше. Мне нужно добавить линейную диаграмму 2-3 График 30 - значения, полученные из базы данных. Я хотел создать отдельный поток, но есть ошибки.JAVAFX LineChart Thread

ОШИБКА: «Исключение в потоке "Thread-4" java.lang.IllegalStateException: Не на FX потоке приложения; currentThread = Thread-4 ''

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(); 

    } 
} 

ответ

0

Использование Platform.runlater (() -> {}) при вызове материал, который идет на потоке приложения.

Существует много потоков, связанных с некоторыми аналогичными проблемами. Просто найдите многопоточность javafx.

Смежные вопросы