Javafx-如何将饼图从不同类添加到BorderPane

Javafx-如何将饼图从不同类添加到BorderPane,java,charts,javafx,Java,Charts,Javafx,我有两节课。一个主类和一个图表类。我的图表类扩展了PieChart,并在其构造函数中实例化了一个饼图。我的主类创建了一个BorderPane,然后我实例化了Chart类的一个对象(创建饼图)并将其添加到中心窗格中。唯一的问题是我不知道正确使用的确切语法,特别是在我的Chart类的构造函数中 我知道,例如,如果我在构造函数中创建HBox而不是饼图,我可以简单地使用它。还有一些方法。但是饼图有额外的元素和可观察的列表,所以我不知道如何使它工作?下面是我的两门课。请帮忙。多谢各位 主类 public

我有两节课。一个主类和一个图表类。我的图表类扩展了PieChart,并在其构造函数中实例化了一个饼图。我的主类创建了一个BorderPane,然后我实例化了Chart类的一个对象(创建饼图)并将其添加到中心窗格中。唯一的问题是我不知道正确使用的确切语法,特别是在我的Chart类的构造函数中

我知道,例如,如果我在构造函数中创建HBox而不是饼图,我可以简单地使用它。还有一些方法。但是饼图有额外的元素和可观察的列表,所以我不知道如何使它工作?下面是我的两门课。请帮忙。多谢各位

主类

public class Main extends Application {
@Override
public void start(Stage primaryStage) {
    BorderPane border = new BorderPane();

    Chart chart = new Chart();

    border.setCenter(chart);

    Scene scene = new Scene (border, 640,680);
    primaryStage.setScene(scene);
    primaryStage.show();

}
public static void main(String[] args) {
    launch(args);
}}
图表类

public class Chart extends PieChart{

public Chart(){
    ObservableList<PieChart.Data>pieChart = FXCollections.observableArrayList(
            new PieChart.Data("Fruits", 75),
            new PieChart.Data("Vegetables", 25)
            );

    PieChart chart = new PieChart(pieChart);

    //What code can create the Pie Chart here? Is the solution to place the chart on it's own pane instead?
}}
公共类图表扩展了公共类图表{
公共图表(){
ObservableListPichart=FXCollections.observableArrayList(
新PieChart.数据(“水果”,75),
新PieChart.数据(“蔬菜”,第25页)
);
PieChart图表=新PieChart(PieChart);
//什么代码可以在这里创建饼图?解决方案是将饼图放在自己的窗格中吗?
}}

您可能正在寻找

public Chart(){
    ObservableList<PieChart.Data>pieChart = FXCollections.observableArrayList(
            new PieChart.Data("Fruits", 75),
            new PieChart.Data("Vegetables", 25)
            );
    setData(pieChart);
    // no need for this -> PieChart chart = new PieChart(pieChart);
}
注释后编辑:setData(ObservableList数据)是PieChart类中的一个方法。它将设置数据对象。在图表或任何其他以采集为动力的视图中处理数据是一种简单方便的方法。(是的,它是而不仅仅是图表样式。。对于所有JavaFX视图,它几乎都是一样的。图表将侦听数据更改并在内部重新绘制自己。您只需要设置要显示的数据。在您的情况下,您使用此方法是因为
图表扩展了PieChart

当您执行
PieChart charts=new PieChart(data);
在PieChart中,它将在内部调用setData

public PieChart(ObservableList<PieChart.Data> data){
   setData(data);
   ...
}

顺便说一句,看一下本教程

是的,就是这样!谢谢。如果您有时间,可以解释一下setData方法。这是针对图形的特定方法还是在实例化javafx控件时更常用的方法?再次感谢
public PieChart(ObservableList<PieChart.Data> data){
   setData(data);
   ...
}
PieChart charts = new PieChart();
ObservableList<PieChart.Data> pieChart = ...
charts.setData(pieChart);
// pieChart == charts.getData() // this is the same object. so
pineChart.add(new PieChart.Data("New Fruit", 75)) // will change chart