当前位置: 首页 > 知识库问答 >
问题:

如何用嵌入JavaFx applet在Swing中更新饼图-空点异常

葛言
2023-03-14

我正在完成学校的最后一项编程任务,想在我的java应用程序中添加一个小功能糖果,在JavaFX中以动态饼图的形式。

使用NetBeans7.2rc2,我从模板中创建了一个Swing/JavaFX混合应用程序。我扩展了JPanelClass来创建一个shell,我的主要应用程序可以用它来访问FX特性。然而,我面临的问题是,虽然图表的初始化进行得很顺利,但当我试图更新broked的东西时,它会生成一个空指针异常。我相信下面是相关的代码:

实例化:

public class PieChartJFxPanel extends JApplet {

  private static final int JFXPANEL_WIDTH_INT = 500;
  private static final int JFXPANEL_HEIGHT_INT = 500;

    StackPane root = new StackPane();
    PieChart athleteChart;
    ObservableList<PieChart.Data> pieChartData =FXCollections.observableArrayList();
    private static JFXPanel fxContainer;
    private int fAthletes=0;
    private int rAthletes=0;

   public PieChartJFxPanel(int totalAthletes,int finishedAthletes){
    super();
    fAthletes=finishedAthletes;
    rAthletes=totalAthletes-fAthletes;
}

@Override
public void init() {
    fxContainer = new JFXPanel();
    fxContainer.setPreferredSize(new Dimension(JFXPANEL_WIDTH_INT, JFXPANEL_HEIGHT_INT));                    
    add(fxContainer, BorderLayout.CENTER);
    // create JavaFX scene
    Platform.runLater(new Runnable() {
        @Override
        public void run() {
            createScene();
        }
    });
}
private void createScene() {     
    pieChartData.add(new PieChart.Data("Finished",fAthletes));
    pieChartData.add(new PieChart.Data("Outstanding",rAthletes));               
    athleteChart=new PieChart();     
    athleteChart.setLegendVisible(false);
   athleteChart.setTitle("Race Status");
   //athleteChart.setAnimated(true);       
    athleteChart.setData(pieChartData);               

    root.getChildren().add(athleteChart);
    fxContainer.setScene(new Scene(root));        
    //


}
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)

任何帮助都很感激:)提前感谢

共有1个答案

窦凯定
2023-03-14

您从不初始化AtheleteChart

athleteChart.setData(pieChartDat);

AthleteChart在调用时为null,并且始终为null。

 类似资料:
  • 嗨,我正在使用chartnewjs。我想用动画更新饼图。我使用的折线图与实时更新。updateChart(ctx, data, config, true, true)方法工作正常。我已经尝试了同样的饼图,但图表没有更新。 然后我像每次刷新一样尝试创建新图表(document.getElementById(“peak_session”).getContext(“2d”)).Pie(数据,选项)它工作

  • 问题内容: 我有一个动态数据源,它经常在浏览器中创建一个新的json。 我能够使用下面的代码从这个json创建饼图(也在这个小提琴中) 此数据经常更新,那么更新饼图的最佳方法是什么?看看这个小提琴。在这里,我还有另一个名为data2的json。 我怎样才能简单地用data2替换数据并使饼动画化/更新? 注意:在某些更新中,值可能== 0 问题答案: 我已经创建了一个有效的版本,并将其发布在这里:h

  • 问题内容: 我有一个从JPanel继承并带有图像的类,我想设置一个小动画来显示面板/图像,然后在事件触发时淡出它。 我大概设置了一个线程并启动了动画,但是我该如何实际执行淡入淡出呢? 问题答案: 你可以自己进行线程化,但是使用Trident库进行处理可能会更容易。如果在你的类(例如)上创建了一个setter ,则可以要求trident在特定时间段内将“不透明度”字段从1.0插入到0.0(这里有一些

  • 我有一个很大的swing应用程序,我想把javafx嵌入其中。我多次尝试这样做(通过遵循oracle教程等),但只有在声明一个新的JFrame以使用JFXPanel组件时才成功。但是,我不想使用新的框架,我想将我的Javafx代码合并到swing应用程序的根JFrame中。 我们可以将javaFX组件嵌入到JPanel而不是JFrame中吗?如果答案是肯定的,为什么我没有成功?

  • 问题内容: 我有一个Swing应用程序,即使我在/中都包含了所有内容,也没有捕获到异常。 我得到的只是这个堆栈跟踪: 问题答案: 正如另一位发布者所提到的,您的问题是该异常正在另一个线程(事件调度线程)中引发。几个解决方案: 在发生异常的实际代码周围进行尝试/捕获:例如,如果它是对ActionListener处理的按钮单击的响应,则将try / catch放入actionPerformed()方法

  • 问题内容: 我在这里重新绘制图形时遇到问题。我允许用户在时间刻度(x轴)中指定单位,然后重新计算并调用此函数plots()。我希望该图仅进行更新,而不是将另一个图附加到该图上。 问题答案: 你基本上有两个选择: 精确执行当前操作,但在重新配置数据之前先致电和。这是最慢但最简单,最可靠的选择。 除了重新绘制外,你还可以更新绘图对象的数据。你需要在代码中进行一些更改,但这比每次重新绘制都快得多。但是,

  • 问题内容: 我浏览了猫鼬API,以及关于SO和google小组的许多问题,但仍然无法弄清更新嵌入式文档。 我正在尝试使用args的内容更新此特定的userListings对象。 以下是架构: 此发现也不起作用,这可能是第一个问题: 返回: 那应该等同于此mongo客户呼叫: 运行: 问题答案: 当您已有用户时,您可以执行以下操作: 如在这里找到:http : //mongoosejs.com/do

  • 问题内容: 我想用字符串键和struct值构建一个映射,通过它我可以更新由map key标识的映射中的struct值。 我已经尝试过了,这并没有给我想要的输出。 我真正想要的是: 问题答案: 您无法更改与地图中的键关联的值,只能重新分配值。 这给您2种可能性: 将指针存储在地图中,因此您可以修改 指向的 对象(不在地图数据结构内部)。 存储结构值,但是在修改它时,需要将其重新分配给键。 1.使用指