如何从场景构建器管理javaFX中的scatterChar?

时间:2016-12-06 21:51:20

标签: javafx-8 scenebuilder scatter

我知道如何管理scatter chart中的start method,但我想使用包含散点图的fxml文件,然后我想使用控制器来控制它。我为此目的使用Scenebuilder,但我不知道如何将类别轴添加到scatterChar,我找到了数字轴,但我没有看到要添加的任何类别轴。是场景构建器中带有散点图的水平类别轴,但我不知道,我如何为其添加一些值。这可能在场景构建器中,或者我必须在控制器中执行吗?

1 个答案:

答案 0 :(得分:1)

基于代码的解决方案

  1. 在SceneBuilder中选择散点图。
  2. 在散点图的“代码”面板中,键入要分配的fx:id(例如scatterChart)。
  3. 在控制器中注入散点图参考:

    @FXML ScatterChart scatterChart;
    
  4. 在控制器的initialize()方法中添加类别。

    CategoryAxis xAxis = (CategoryAxis) scatterChart.getXAxis();
    xAxis.getCategories().setAll(
            "UFO sightings", 
            "Paranormal Events", 
            "Inexplicable Tweets"
    );
    
  5. 如果您需要将数据传递到控制器以绘制图表内部,请从以下位置选择方法:

  6. 备用部分基于FXML的解决方案

    虽然您无法通过SceneBuilder UI将类别添加到图表中,但您可以手动编辑FXML文件,在SceneBuilder中加载已编辑的文件(这将解析文件并显示类别并保留您的手工编辑时你在SceneBuilder中保存文件。

    不是在步骤4中定义的initialize()中的代码中添加类别,而是手动编辑FXML文件并添加类别。这是一个示例:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <?import java.lang.String?>
    <?import javafx.collections.FXCollections?>
    <?import javafx.scene.chart.CategoryAxis?>
    <?import javafx.scene.chart.NumberAxis?>
    <?import javafx.scene.chart.ScatterChart?>
    
    <ScatterChart fx:id="scatterChart" title="Concerning Events" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1">
      <xAxis>
        <CategoryAxis side="BOTTOM">
          <categories>
            <FXCollections fx:factory="observableArrayList">
              <String fx:value="UFO Sightings" />
              <String fx:value="Paranormal Activity" />
              <String fx:value="Inexplicable Tweets" />
            </FXCollections>
          </categories>
        </CategoryAxis>
      </xAxis>
      <yAxis>
        <NumberAxis side="LEFT" />
      </yAxis>
    </ScatterChart>
    

    screenshot

    您无法使用FXML使用实际数据重新填充图表(但无论如何都不太可能想要这样做)。