V-Q-A NGUYEN
V-Q-A NGUYEN

Reputation: 1707

How to remove a series from DynamicTimeSeriesCollection?

Anyone can guide me on how to remove a series from DynamicTimeSeriesCollection?

In this example, I want to delete series S1

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

I don't know how to do it.

Thank you very much.

Upvotes: 0

Views: 432

Answers (2)

V-Q-A NGUYEN
V-Q-A NGUYEN

Reputation: 1707

Thanks GrahamA for your answer. Cause i need to touch seriesCount is private, so i must create a new class named DynamicTimeSeriesCollectionModified (copy-paste from DynamicTimeSeriesCollection) and write my own removeSeries and it works.

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

    }

Upvotes: 1

GrahamA
GrahamA

Reputation: 5923

DynamicTimeSeriesCollection stores values in an array of ValueSequence. By default a ValueSequence can't be deleted but as ValueSequence is protected you can subclass DynamicTimeSeriesCollection wrtie your own removeSeries method and see if that solves your problem.

Take a look at DynamicTimeSeriesCollection#addSeries and reverse the steps, remember to call fireSeriesChanged() at the end.

Upvotes: 1

Related Questions