如何从场景生成器管理 javaFX 中的 scatterChar?

how can I manage a scatterChar in the javaFX from scene builder?

我知道如何管理start method里面的scatter chart,但是我想用一个包含散点图的fxml文件,然后我想用一个控制器来控制那。为此,我使用了 Scenebuilder,但我不知道如何将类别轴添加到 scatterChar,我找到了数字轴,但我没有看到 [=17] 的任何类别轴=] 是场景生成器中与散点图一起的水平类别轴,但我不知道如何向其添加一些值。这可能在场景构建器中进行,还是我必须在控制器中进行?

基于代码的解决方案

  1. Select 您在 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. 如果您需要将数据传递到控制器以在图表中绘制,select 方法来自:

    • Passing Parameters JavaFX FXML

替代的部分基于 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>

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