Java e JFreechart: ottieni solo la voce modificata da un DatasetChangeEvent
-
27-10-2019 - |
Domanda
Sto utilizzando un DatasetChangeListener
per monitorare la modifica di alcuni XYSeriesCollection
perché una modifica in una serie deve riflettersi su altre serie di grafici della mia applicazione.
public void datasetChanged(DatasetChangeEvent arg0) {
XYSeriesCollection d = (XYSeriesCollection)arg0.getDataset();
System.out.println(d.getGroup().getID());
}
Sto usando DatasetGroup
per memorizzare una stringa che identifica in modo univoco il set di dati.
Ora il punto è che vorrei conoscere solo la singola voce del set di dati su cui è avvenuta la modifica, altrimenti sono costretto a iterare tutto il set di dati e ispezionare tutti i dati.C'è un modo per farlo?
Ad esempio vorrei sapere che è avvenuta una modifica per la serie 1 nella collezione, sul valore y del terzo elemento.È possibile?
Soluzione
Il Dataset
restituito da getDataset()
probabilmente non è utile in questo contesto.Invece, guarda la fonte di un SeriesChangeEvent
.Probabilmente dovrai sovrascrivere uno o più metodi add()
in una sottoclasse di XYSeries
per tenere traccia dei dettagli della modifica.
Altri suggerimenti
Ho risolto parzialmente utilizzando SeriesChangeListener e aggiungendo una stringa di descrizione a ciascuna serie, ma ho ancora bisogno di ispezionare tutti i valori all'interno della serie. È una soluzione migliore rispetto all'utilizzo di un DatasetChangeListener (non ho bisogno di ispezionare tutti i valori di tutte le serie nel set di dati) ma non è perfetto.