Graph 如何清除JavaFX图形中的所有数据?
我有一个奇怪的例外,我认为这是一个错误。我正在尝试清除一个序列,其中包含要在图形中绘制的点列表。然而,在清除后,我想添加新数据,这给了我一个nul指针异常。我的代码:Graph 如何清除JavaFX图形中的所有数据?,graph,charts,javafx,javafx-2,javafx-8,Graph,Charts,Javafx,Javafx 2,Javafx 8,我有一个奇怪的例外,我认为这是一个错误。我正在尝试清除一个序列,其中包含要在图形中绘制的点列表。然而,在清除后,我想添加新数据,这给了我一个nul指针异常。我的代码: public static void main(String[] args) { Series<String, Number> series = new Series<String, Number>(); Number value1 = new Integer(5);
public static void main(String[] args) {
Series<String, Number> series = new Series<String, Number>();
Number value1 = new Integer(5);
Number value2 = new Integer(6);
Data<String, Number> point1 = new Data<String, Number>("Something", value1);
Data<String, Number> point2 = new Data<String, Number>("Something", value2);
series.getData().add(point1);
series.getData().add(point2);
series.getData().clear();
Number value3 = new Integer(7);
Data<String, Number> point3 = new Data<String, Number>("Something", value3);
**series.getData().add(point3);**
}
我在标记的代码行得到一个空指针异常。我只是需要一种方法来重置这个系列,但对我来说,这似乎是JavaFX中的一个bug。我使用Java8,它将JavaFX作为一个集成
有人能帮我吗?技术原因是数据列表上的侦听器中有一个NPE,按系列安装:
if (c.getAddedSize() > 0) {
for (Data<X,Y> itemPtr = begin; itemPtr != null; itemPtr = itemPtr.next) {
if (itemPtr.setToRemove) {
getChart().dataBeingRemovedIsAdded(itemPtr, Series.this);
itemPtr.setToRemove = false;
}
}
}
如果在图表为空时删除了项目,则会引发下一次添加
更深层次的原因是有点复杂的删除机制:该系列不删除项目本身,只将其标记为准备删除。然后,它将更改委托给它的图表,然后该图表将回调到序列中以执行实际的删除。如果没有图表,这种机制就会失效
真正的解决方案从外部来说可能很难,因为一切都是如此紧密和秘密地编织着——没有办法钩住你自己的听众去做真正的移除。如果您真的必须在没有附加图表的情况下操作删除序列中的项目,您可以尝试实现一个虚拟图表并将其设置为序列。在我看来似乎是一个错误:序列中的侦听器假设该图表=无效的