如何从场景生成器管理 javaFX 中的 scatterChar?
how can I manage a scatterChar in the javaFX from scene builder?
我知道如何管理start method
里面的scatter chart
,但是我想用一个包含散点图的fxml
文件,然后我想用一个控制器来控制那。为此,我使用了 Scenebuilder
,但我不知道如何将类别轴添加到 scatterChar
,我找到了数字轴,但我没有看到 [=17] 的任何类别轴=] 是场景生成器中与散点图一起的水平类别轴,但我不知道如何向其添加一些值。这可能在场景构建器中进行,还是我必须在控制器中进行?
基于代码的解决方案
- Select 您在 SceneBuilder 中的散点图。
- 在散点图的“代码”面板中,键入要分配的 fx:id(例如
scatterChart
)。
在您的控制器中注入散点图参考:
@FXML ScatterChart scatterChart;
在控制器的 initialize()
方法中添加类别。
CategoryAxis xAxis = (CategoryAxis) scatterChart.getXAxis();
xAxis.getCategories().setAll(
"UFO sightings",
"Paranormal Events",
"Inexplicable Tweets"
);
如果您需要将数据传递到控制器以在图表中绘制,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 将实际数据重新填充到图表中(但无论如何都不太可能想要这样做)。
我知道如何管理start method
里面的scatter chart
,但是我想用一个包含散点图的fxml
文件,然后我想用一个控制器来控制那。为此,我使用了 Scenebuilder
,但我不知道如何将类别轴添加到 scatterChar
,我找到了数字轴,但我没有看到 [=17] 的任何类别轴=] 是场景生成器中与散点图一起的水平类别轴,但我不知道如何向其添加一些值。这可能在场景构建器中进行,还是我必须在控制器中进行?
基于代码的解决方案
- Select 您在 SceneBuilder 中的散点图。
- 在散点图的“代码”面板中,键入要分配的 fx:id(例如
scatterChart
)。 在您的控制器中注入散点图参考:
@FXML ScatterChart scatterChart;
在控制器的
initialize()
方法中添加类别。CategoryAxis xAxis = (CategoryAxis) scatterChart.getXAxis(); xAxis.getCategories().setAll( "UFO sightings", "Paranormal Events", "Inexplicable Tweets" );
如果您需要将数据传递到控制器以在图表中绘制,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 将实际数据重新填充到图表中(但无论如何都不太可能想要这样做)。