Java e JFreechart: obtenha apenas a entrada modificada de um DatasetChangeEvent
-
27-10-2019 - |
Pergunta
Estou usando um DatasetChangeListener
para monitorar a modificação de algum XYSeriesCollection
porque uma alteração em uma série deve ser refletida em outras séries de gráficos do meu aplicativo.
public void datasetChanged(DatasetChangeEvent arg0) {
XYSeriesCollection d = (XYSeriesCollection)arg0.getDataset();
System.out.println(d.getGroup().getID());
}
Estou usando DatasetGroup
para armazenar uma string que identifica exclusivamente o conjunto de dados.
Agora a questão é, eu gostaria de saber apenas a única entrada do conjunto de dados em que a alteração ocorreu, caso contrário, sou forçado a iterar por todo o conjunto de dados e inspecionar todos os dados.Existe alguma maneira de fazer isso?
Por exemplo, gostaria de saber que ocorreu uma alteração para a série 1 da coleção, no valor y do terceiro elemento.Isso é possível?
Solução
O Dataset
retornado por getDataset()
provavelmente não é útil neste contexto.Em vez disso, observe a fonte de um SeriesChangeEvent
.Você provavelmente terá que substituir um ou mais dos métodos add()
em uma subclasse de XYSeries
para rastrear os detalhes da mudança.
Outras dicas
Resolvi parcialmente usando SeriesChangeListener e adicionando uma string de descrição a cada série, mas ainda preciso inspecionar todos os valores dentro da série. É uma solução melhor do que usar um DatasetChangeListener (não preciso inspecionar todos os valores de todas as séries no conjunto de dados), mas não é perfeito.