Как включить JavaFX Chart в существующий графический интерфейс? - PullRequest
0 голосов
/ 22 июня 2019

У меня есть два класса, первый содержит существующий графический интерфейс, а второй предназначен для создания линейной диаграммы.Теперь мой вопрос: как я могу включить созданную диаграмму в существующий графический интерфейс, не создавая новое окно, как сейчас?Метод создания диаграмм:

public void start(Stage s) throws Exception {
    s.setTitle("JavaFX Realtime Chart Demo");

    //defining the axes
    final CategoryAxis xAxis = new CategoryAxis(); // we are gonna plot against time
    final NumberAxis yAxis = new NumberAxis(0,10,1);
    xAxis.setLabel("Time/s");
    xAxis.setAnimated(false); // axis animations are removed
    yAxis.setLabel("Value");
    yAxis.setAnimated(false); // axis animations are removed

    //creating the line chart with two axis created above
    final LineChart<String, Number> lineChart = new LineChart<>(xAxis, yAxis);
    lineChart.setTitle("Realtime JavaFX Charts");
    lineChart.setAnimated(true); // disable animations

    //defining a series to display data
    XYChart.Series<String, Number> series = new XYChart.Series<>();
    series.setName("U/s");
    XYChart.Series<String, Number> series2 = new XYChart.Series<>();
    series2.setName("km/h");
    // add series to chart
    lineChart.getData().addAll(series,series2);


    // setup scene
    Scene scene = new Scene(lineChart, 800, 600);
    s.setScene(scene);

    // show the stage        
    s.show();

    // this is used to display time in HH:mm:ss format
    final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");

    // setup a scheduled executor to periodically put data into the chart
    scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();

    // put dummy data onto graph per second
    scheduledExecutorService.scheduleAtFixedRate(() -> {
        // get a random integer between 0-10



        wert = G.gebeInt();
        wert_2 = G.gebeV();
        // Update the chart
        Platform.runLater(() -> {
            // get current time
            Date now = new Date();
            // put random number with current time

            series.getData().add(new XYChart.Data<>(simpleDateFormat.format(now), wert));
            series2.getData().add(new XYChart.Data<>(simpleDateFormat.format(now), wert_2));

            if (series.getData().size() > WINDOW_SIZE) {
                series.getData().remove(0);
            }
            if (series2.getData().size() > WINDOW_SIZE) {
                series2.getData().remove(0);
            }
        });
    }, 0, 2, TimeUnit.SECONDS);

}

Я использую Swing для графического интерфейса и JavaFX для создания диаграмм, в данном случае LineChart.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...