使用场景构建器创建的Javafx饼图不显示数据

时间:2012-10-01 13:04:25

标签: charts javafx builder scene pie-chart

我在使用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值实例化饼图。

不幸的是,我的饼图没有显示......我想念的是什么?

欢呼任何帮助。

2 个答案:

答案 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);

}
}