Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Swing中使用嵌入式JavaFXApplet更新饼图-空点异常_Java_Swing_Javafx - Fatal编程技术网

如何在Swing中使用嵌入式JavaFXApplet更新饼图-空点异常

如何在Swing中使用嵌入式JavaFXApplet更新饼图-空点异常,java,swing,javafx,Java,Swing,Javafx,我正在为学校做最后一项编程任务,我想在我的java应用程序中添加一块功能性的小糖果,以JavaFx中的动态饼图的形式 使用Netbeans 7.2 rc2,我从模板创建了一个swing/javafx混合应用程序。我扩展了JPanelClass来创建一个shell,我的主应用程序可以使用它来访问FX功能。然而,我面临的问题是,虽然图表的初始化进展顺利,但当我尝试更新被破坏的东西时,它会生成一个空指针异常。 我认为以下是相关代码: 实例化: 以及生成异常的方法: public void setDat

我正在为学校做最后一项编程任务,我想在我的java应用程序中添加一块功能性的小糖果,以JavaFx中的动态饼图的形式

使用Netbeans 7.2 rc2,我从模板创建了一个swing/javafx混合应用程序。我扩展了JPanelClass来创建一个shell,我的主应用程序可以使用它来访问FX功能。然而,我面临的问题是,虽然图表的初始化进展顺利,但当我尝试更新被破坏的东西时,它会生成一个空指针异常。 我认为以下是相关代码:

实例化:

以及生成异常的方法:

public void setData(int total, int in){
    final  ObservableList<PieChart.Data> pieChartDat=FXCollections.observableArrayList();
    pieChartDat.add(new PieChart.Data("Finished",fAthletes));
    pieChartDat.add(new PieChart.Data("Outstanding",rAthletes));  
    athleteChart.setData(pieChartDat);                
}
Exception in thread "main" java.lang.NullPointerException
     at piechartjpanel.PieChartJFxPanel.setData(PieChartJFxPanel.java:95)
     at piechartjpanel.AthleteIOChart.setAthletes(AthleteIOChart.java:62)
     at piechartjpanel.Test.setter(Test.java:34)
     at piechartjpanel.Test.main(Test.java:48)
感谢您的帮助:)
提前感谢

您从未初始化删除图表

athleteChart.setData(pieChartDat)

调用此函数时,
athleteChart
null
,并且始终为


要么在构造函数中初始化它,要么简单地将其更改为
PieChart-atheleteChart=new-PieChart()

我发现,由于JavaFX使用对象作为数据模型,因此每当对象的参数发生更改时,图表就会自动更新,因此在我上面发布的更改pieChart值的示例中,我所需要的只是与以下类似的内容:

pieChartData.get(index).setValues(blah,blah);
我发现Swing组件也有这样做的习惯,使用对象作为动态数据类型,自动更改以反映外观以反映不断变化的值。我很惊讶没有人注意到这一点,也许我的问题措辞不当。
谢谢大家

图表已经初始化(见下文),问题是我想更新它。感谢您的快速回答,但您确定总是在
setData()
之前调用它吗?但它尚未初始化。。。因此,NPE。唯一可能抛出NPE的是
a删除图表
。检查是否在setData()之前调用CreateSecene(),我猜不是。每次修改类时都必须调用CreateSecene吗?RabtFt,只需将您的注释复制到答案中,并将您自己创建的答案标记为正确即可。
Exception in thread "main" java.lang.NullPointerException
     at piechartjpanel.PieChartJFxPanel.setData(PieChartJFxPanel.java:95)
     at piechartjpanel.AthleteIOChart.setAthletes(AthleteIOChart.java:62)
     at piechartjpanel.Test.setter(Test.java:34)
     at piechartjpanel.Test.main(Test.java:48)
pieChartData.get(index).setValues(blah,blah);