JavaFX,更改饼图切片的名称会导致IllegalStateException
我现在使用一个JavaFX,现在我创建了PieChart 我在教程中看到 饼图标签可能有用,因此我让它显示名称和数据值 就这样 结果与初始结果完全相同 下一步是根据数据用户的选择使其动态化JavaFX,更改饼图切片的名称会导致IllegalStateException,java,javafx,Java,Javafx,我现在使用一个JavaFX,现在我创建了PieChart 我在教程中看到 饼图标签可能有用,因此我让它显示名称和数据值 就这样 结果与初始结果完全相同 下一步是根据数据用户的选择使其动态化 public void setSlice(double percent, int index){ pieChartData.get(index).setPieValue(percent); pieChartData.get(index).setName(caption[inde
public void setSlice(double percent, int index){
pieChartData.get(index).setPieValue(percent);
pieChartData.get(index).setName(caption[index]+"\n"+(int)(percent*100)+"%");
}
以及行pieChartData.getindex.setNamecaption[index]+\n+intpercent*100+%;原因
线程AWT-EventQueue-0中出现异常
java.lang.IllegalStateException:不在FX应用程序线程上;
currentThread=AWT-EventQueue-0
是否仍有更改切片名称的方法?或者使结果与我上面描述的类似?从异常中可以看出的最可能的原因是方法setSlice是从JavaFX应用程序线程以外的线程调用的 解决此问题的方法有很多: 这是最简单的方法,从JavaFX应用程序线程调用该方法 您可以从应用程序线程调用该方法,也可以在其中覆盖该方法主体 您可以执行以下操作:
Platform.runLater(new Runnable(){
setSlice(10, 3);
});
或者
您还可以深入了解如何使用和创建类
因为这似乎是一个集成了JavaFX和Swing/AWT的应用程序,所以可能也会有所帮助。
Platform.runLater(new Runnable(){
setSlice(10, 3);
});
public void setSlice(double percent, int index){
Platform.runLater(new Runnable(){
pieChartData.get(index).setPieValue(percent);
pieChartData.get(index).setName(caption[index]+"\n"+(int)(percent*100)+"%");
});
}