Линейная диаграмма JAVAFX против XYChart

#java #eclipse #javafx #linechart

#java #eclipse #javafx #линейная диаграмма

Вопрос:

Я пытаюсь добавить линейную диаграмму в свою сцену с помощью JavaFX, однако, когда я использую конструктор «новая линейная диаграмма (ось xAxis, ось чисел yAxis), данные не отображаются внутри диаграммы.

Мой код описан ниже: линейная диаграмма, определенная в файле fxml, который инициализируется в контроллере

 @FXML private LineChart<String,Number> lineChart;
  

Инициализировал данные:

 XYChart.Series<String,Number> series = new XYChart.Series<String,Number>();
        
        series.getData().add(new XYChart.Data<String,Number>("Sample #1", 1);
        series.getData().add(new XYChart.Data<String,Number>("Sample #2", 2);
  

добавлены данные в диаграмму:

 lineChart.getData().add(series);
  

В этом случае это работает, но я не могу адаптировать yAxys к диапазону данных. В связи с этим я попытался сделать следующее:

         final NumberAxis xAxis = new NumberAxis(); 
 
        final NumberAxis yAxis = new NumberAxis(); 

        lineChart= new LineChart<String,Number>(xAxis,yAxis); 

        lineChart.getData().add(series);
  

В этом случае диаграмма отображается, но данные не загружаются.
Не могли бы вы сказать мне, что с этим не так?
Спасибо

Комментарии:

1. Вы создаете новый LineChart : так что теперь у вас их два (тот, который создан в файле FXML, и тот, который вы создали в коде new LineChart<>(...) ). Отображается тот, который создан в файле FXML, но вы добавляете данные в другой LineChart . Таким образом, вы не видите данные.

2. Удалить lineChart= new LineChart<String,Number>(xAxis,yAxis); .

3. Привет, Грег, спасибо за вашу помощь. Я понимаю проблему, я подумал, что это правильный способ присвоить оси X и Y диаграмме FXML. Мне нужно реализовать одно из этих решений, но сделать так, чтобы оси Y автоматически масштабировались до диапазона данных. Есть ли способ сделать это с линейной диаграммой FXML? Спасибо

4. Разве вы не определяете оси и в FXML? Просто введите их в контроллер так же, как вы это делаете LineChart , и вызовите любой метод, который вам нужен для их вызова.

5. С моей стороны это было действительно нуби, теперь я это сделал. Действительно благодарю вас за вашу помощь. Желаю хорошего вечера