4

我在使用 Oracle 的一些 Javafx 示例时遇到问题,因为“场景”不是使用 Scene Builder 创建的,因此代码与我想要使用的代码不同。

我正在尝试使用包含饼图的场景构建器创建布局。我已将图表的 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 值实例化饼图。

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

为任何帮助而欢呼。

4

2 回答 2

3

不要创建新的饼图。

FXML 加载过程将为您创建一个图表实例并将其作为 FXML 定义的布局窗格的子项插入。@FXML 注释会将图表的引用注入到您的控制器中。

您在 Controller 的初始化程序中需要做的就是用您的数据填充现有图表。您可以通过在 myPieChart 上调用setData来完成此操作。

于 2012-10-01T20:05:08.007 回答
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);

}
}
于 2013-07-18T12:06:51.553 回答