Graph 如何清除JavaFX图形中的所有数据?

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

我有一个奇怪的例外,我认为这是一个错误。我正在尝试清除一个序列,其中包含要在图形中绘制的点列表。然而,在清除后,我想添加新数据,这给了我一个nul指针异常。我的代码:

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;
        }
    }
}
如果在图表为空时删除了项目,则会引发下一次添加

更深层次的原因是有点复杂的删除机制:该系列不删除项目本身,只将其标记为准备删除。然后,它将更改委托给它的图表,然后该图表将回调到序列中以执行实际的删除。如果没有图表,这种机制就会失效


真正的解决方案从外部来说可能很难,因为一切都是如此紧密和秘密地编织着——没有办法钩住你自己的听众去做真正的移除。如果您真的必须在没有附加图表的情况下操作删除序列中的项目,您可以尝试实现一个虚拟图表并将其设置为序列。

在我看来似乎是一个错误:序列中的侦听器假设该图表=无效的