i red in jfreechart Developer Guide that JFreeChart uses an event notification mechanism to update a chart
but i don't know how to implement DatasetChangeListener and DatasetChangeEvent
please help me

Code: Select all
public class TestJfreeChart implements DatasetChangeListener {
XYDataset dataset;
public TestJfreeChart()
{
}
public String generateChartMethod(){
System.out.println("Appel de generateChartMethod");
JFreeChart chart = ChartFactory.createTimeSeriesChart(
"Test", // title
"Date", // x-axis label
"Nombre", // y-axis label
getDataset(), // data
true, // create legend?
true, // generate tooltips?
false // generate URLs?
);
XYPlot plot = chart.getXYPlot();
plot.setBackgroundPaint(Color.white);
plot.setDomainGridlinePaint(Color.GRAY);
plot.setRangeGridlinePaint(Color.GRAY);
HttpSession s=SessionUtil.getSession();
String adressePagesWeb=s.getServletContext().getRealPath("/")+"pages/";
try {
File file1 = new File(adressePagesWeb+"piechart.png");
ChartUtilities.saveChartAsPNG(file1, chart, 600, 400, null);
} catch (Exception e) {
e.printStackTrace();
}
return "jfreechart";
}
public XYDataset getDataset() {
HttpSession session=SessionUtil.getSession();
TimeSeriesCollection dataset;
try{
dataset=(TimeSeriesCollection)session.getAttribute("jfreechart");
dataset.toString();
}catch(NullPointerException e)
{
dataset=new TimeSeriesCollection();
TimeSeries s3 = new TimeSeries("Series 3");
s3.add(new Minute(1,new Hour()),5);
s3.add(new Minute(2,new Hour()),7);
s3.add(new Minute(3,new Hour()),8);
s3.add(new Minute(4,new Hour()),10);
s3.add(new Minute(5,new Hour()),20);
s3.add(new Minute(6,new Hour()),50);
s3.add(new Minute(7,new Hour()),55);
s3.add(new Minute(8,new Hour()),100);
s3.add(new Minute(22,new Hour()),150);
s3.add(new Minute(23,new Hour()),400);
s3.add(new Minute(35,new Hour()),450);
s3.add(new Minute(55,new Hour()),100);
dataset.addSeries(s3);
session.setAttribute("jfreechart",dataset);
}
return dataset;
}
public void setDataset(XYDataset dataset) {
this.dataset = dataset;
}
public void update()
{
HttpSession session=SessionUtil.getSession();
TimeSeriesCollection dataset;
Calendar calendrier = Calendar.getInstance();
int min=calendrier.MINUTE;
dataset=(TimeSeriesCollection)session.getAttribute("jfreechart");
try{
dataset.getSeries(0).add(new Minute(59,new Hour()),600);
session.setAttribute("jfreechart",dataset);
generateChartMethod();
}catch(Exception e){
e.printStackTrace();
}
}
public void datasetChanged(DatasetChangeEvent arg0) {
}
}
Code: Select all
dataset.addChangeListener(this);
Code: Select all
public void datasetChanged(DatasetChangeEvent arg0) {
generateChartMethod();
}