我在使用Oracle的一些Javafx示例时遇到问题,因为“场景”不是使用Scene Builder创建的,因此代码与我想要使用的代码不同。
我正在尝试使用包含饼图的scenebuilder创建布局。我已经将图表的fxid设置为'myPieChart',并在代码的开头设置了相应的@FXML private Chart myPieChart;
。
我还添加了以下代码,这些代码在初始化时执行,我认为它会创建图表: -
ObservableList<PieChart.Data> pieChartData = FXCollections.observableArrayList(
new PieChart.Data("Grapefruit", 13),
new PieChart.Data("Oranges", 25),
new PieChart.Data("Plums", 10),
new PieChart.Data("Pears", 22),
new PieChart.Data("Apples", 30));
PieChart myPieChart = new PieChart(pieChartData);
将所有值放入可观察列表中,然后使用ObsevableList值实例化饼图。
不幸的是,我的饼图没有显示......我想念的是什么?
欢呼任何帮助。
答案 0 :(得分:3)
不要创建新的PieChart。
FXML加载过程将为您创建一个图表实例,并将其作为FXML定义布局窗格的子项插入。 @FXML注释会将图表引用注入Controller。
您在Controller的初始化程序中需要做的就是用您的数据填充现有图表。您可以通过在myPieChart上调用setData来执行此操作。
答案 1 :(得分:2)
你可以这样做,只需在你的图表的fxml中设置id
public class GraphScreenController implements Initializable {
@FXML
PieChart chart;
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
ObservableList<PieChart.Data> pieChartData =
FXCollections.observableArrayList(
new PieChart.Data("Executed", 60),
new PieChart.Data("Passed", 25),
new PieChart.Data("Fails", 15));
chart.setData(pieChartData);
}
}