Вместо того, чтобы помещать таймер в свой createDataset()
метод, вы можете вместо этого создать новый поток из основного метода, который изменяет ваш набор данных JFreeChart каждые 5 секунд.
Например, вы можете сделать это примерно так:
public static void main( String[ ] args ) {
XYLineChart_AWT chart = new XYLineChart_AWT("Temp",
"Temperature of some location");
chart.pack( );
RefineryUtilities.centerFrameOnScreen( chart );
chart.setVisible( true );
//now make your timer
int delay = 5000; //milliseconds
ActionListener timerAction = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//some code here to get and modify your dataset so it can be updated
// ----
// ----
//now apply your new dataset to your JFreeChart
xylineChart.getXYPlot().setDataset(myNewDataset);
}
};
new Timer(delay, timerAction).start();
}
Не забудьте добавить код для удаления старых записей в вашем наборе данных, чтобы диаграмма оставалась читаемой, и все значения на оси времени оставались на одном и том же расстоянии друг от друга между различными наборами данных, например, убедитесь, что их не более 24 элементов (2 минуты данные), построенные за один раз.