У меня есть экземпляр JFreeChart, который отображает состояние памяти процесса, инициализированное следующим образом:
m_data = new TimeSeriesCollection();
TimeSeries vmsize = new TimeSeries("VMSize");
TimeSeries resident = new TimeSeries("Resisdent");
TimeSeries shared = new TimeSeries("Shared memory");
TimeSeries code = new TimeSeries("Code");
TimeSeries data = new TimeSeries("Data");
m_data.addSeries(vmsize);
m_data.addSeries(resident);
m_data.addSeries(shared);
m_data.addSeries(code);
m_data.addSeries(data);
JFreeChart chart = ChartFactory.createTimeSeriesChart("Memory usage", "Time", "Size", m_data, true, true, false);
m_chart = new ChartPanel(chart);
Позже я добавляю значения к каждому TimeSeries в TimeSeriesCollection. Я хотел бы так или иначе знать - когда пользователь нажимает на Диаграмму - или во сколько связанный с тем столбцом, или еще лучше - каков индекс значения.
Я посмотрел на классы JFreeChart и ChartMouseListener, но я не мог выяснить, как сделать это (также документация JFreeChart раздражающе недостаточна, я предполагаю, что они пытаются заставить людей покупать свое Руководство разработчика).
хм должно работать, если вы замените последние две строки чем-то вроде этого:
ChartPanel panel=new ChartPanel(ChartFactory.createTimeSeriesChart("Memory usage", "Time", "Size", m_data, true, true, false)));
panel.addChartMouseListener(new ChartMouseListener(){
void chartMouseClicked(ChartMouseEvent e){
[...do something on click...]
}
void chartMouseMoved(ChartMouseEvent e){
[...do something on move...]
}
});
return panel;