如何从DynamicTimeSeriesCollection中删除一个系列?

时间:2014-01-13 14:18:47

标签: jfreechart

任何人都可以指导我如何从DynamicTimeSeriesCollection删除系列文章?

在此示例中,我想删除系列S1

DynamicTimeSeriesCollection dataset = new DynamicTimeSeriesCollection(50, 120, new Second());
dataset.addSeries(gaussianData(), 0, "S1");
dataset.addSeries(gaussianData(), 1, "S2");

我不知道该怎么做。

非常感谢。

2 个答案:

答案 0 :(得分:1)

DynamicTimeSeriesCollection将值存储在ValueSequence数组中。默认情况下,ValueSequence无法删除,但由于ValueSequence受到保护,您可以使用自己的DynamicTimeSeriesCollection方法继承removeSeries,看看是否能解决您的问题。

查看DynamicTimeSeriesCollection#addSeries并反转步骤,请记得最后致电fireSeriesChanged()

答案 1 :(得分:0)

感谢GrahamA的回答。 因为我需要触摸seriesCount是私有的,所以我必须创建一个名为DynamicTimeSeriesCollectionModified的新类(从DynamicTimeSeriesCollection复制粘贴)并编写我自己的removeSeries并且它可以工作。

public void deleteSeries(int seriesNumber) {

        //remove item in valueHistory array
        List<ValueSequence> listValueHistory = new ArrayList<ValueSequence>(Arrays.asList(valueHistory));
        listValueHistory.remove(seriesNumber);
        valueHistory = listValueHistory.toArray(valueHistory);

        //remove item in seriesKeys array
        List<Comparable> listSeriesKeys = new ArrayList<Comparable>(Arrays.asList(seriesKeys));
        listSeriesKeys.remove(seriesNumber);
        seriesKeys = listSeriesKeys.toArray(seriesKeys);                

        //update seriesCount
        seriesCount--;
        fireSeriesChanged();

    }