Почему я не могу изменить диаграмму из .fxml в моем контроллере? - PullRequest
0 голосов
/ 02 января 2019

Я определил BarChart в своем файле .fxml, который я вставляю в свой контроллер, используя аннотацию @FXML.Но когда я вставляю ряд данных, диаграмма все равно отображается пустой в моем приложении, хотя выходные данные отладчика подтверждают, что я успешно вставил ряд данных в свою диаграмму.Нужно ли указывать представлению диаграммы обновляться каким-либо образом?

Конечно, я мог бы просто обойти проблему, получив панель из fxml, в которую я бы затем вставил диаграмму (которая работает, и я использовал этоОбходной путь в прошлом).Но мне любопытно, что я делаю не так.

Спасибо за вашу помощь!

Код контроллера:

@FXML private BarChart<Number,String> barChart;

//...

    barChart.getData().add( new XYChart.Series<Number,String>("blabla",

        eventService
            .getTopTen(EventType.MUSICAL)
            .entrySet()
            .stream()
            .map(entry -> new XYChart.Data<>((Number)entry.getValue(),entry.getKey().getName(),entry))
            .collect(Collectors.collectingAndThen(toList(), FXCollections::observableArrayList))
    ));

Мой FXML:

//...

<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="at.ac.tuwien.inso.sepm.ticketline.client.gui.event.EventTopTenController">
   <children>
      <Button layoutX="267.0" layoutY="361.0" mnemonicParsing="false" onAction="#MusicalTopTenButtonHandler" text="Literature" />
      <BarChart fx:id="barChart" layoutX="52.0" layoutY="14.0" prefHeight="338.0" prefWidth="510.0">
        <xAxis>
          <NumberAxis side="BOTTOM" />
        </xAxis>
        <yAxis>
          <CategoryAxis side="LEFT" />
        </yAxis>
      </BarChart>
   </children>

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Я уже понял это.Я дважды загрузил fxml в свою программу по ошибке.После вызова метода в контроллере один из этих узлов был обновлен, а другой - нет.Я просто смотрел на тот, которого не было.В любом случае, спасибо!

0 голосов
/ 02 января 2019

Вместо этого вы можете использовать библиотеку highcharts. Он поддерживает формат JSON, который может упростить вашу проблему.

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