簡體   English   中英

為什么我不能從控制器中的 .fxml 修改圖表?

[英]Why can't I can't modify a Chart from the .fxml in my Controller?

我在我的 .fxml 文件中定義了一個 BarChart,我使用 @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>

您可以使用 highcharts 庫代替這個。 它支持 json 格式,可以簡化您的問題。

我已經想通了。 我錯誤地將 fxml 加載到我的程序中兩次。 調用控制器中的方法后,其中一個節點被更新,另一個沒有。 我只是在看那個不是的。 不管怎么說,多謝拉!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM