Code: Select all
java.lang.ClassCastException
at org.jfree.chart.renderer.StackedXYAreaRenderer.drawItem(StackedXYAreaRenderer.java:307)
at org.jfree.chart.plot.XYPlot.render(XYPlot.java:2204)
at org.jfree.chart.plot.XYPlot.draw(XYPlot.java:1809)
at org.jfree.chart.JFreeChart.draw(JFreeChart.java:905)
at org.jfree.chart.ChartPanel.paintComponent(ChartPanel.java:987)
It seems it's not the only problem with StackedXYAreaRenderer and ClassCastException with the TableXYDataset class
. . (see http://www.jfree.org/phpBB2/viewtopic.php?t=9828, but there's no answer yet...)
If I use a XYAreaRenderer instead of the StackedXYAreaRenderer a graph is drawn (but I don't get the effect I want : stacked areas...)
Here's the code I wrote to reproduce the error (I'm using JFreeChart 0.9.20) :
Code: Select all
package tests;
import org.jfree.chart.*;
import org.jfree.chart.axis.*;
import org.jfree.data.time.*;
import org.jfree.ui.*;
import org.jfree.chart.plot.*;
import org.jfree.chart.renderer.*;
public class testFabrice extends ApplicationFrame {
public static void main(final String[] args) {
testFabrice demo = new testFabrice();
demo.pack();
demo.setVisible(true);
}
public testFabrice() {
super("Chart Problem");
TimeSeries series1 = new TimeSeries("Series 1", Week.class);
TimeSeries series2 = new TimeSeries("Series 2", Week.class);
for (int i = 0; i < 15; i++) {
series1.add(new Week(i + 1, 2004), Math.random()*50+200);
series2.add(new Week(i + 1, 2004), Math.random()*50+100);
}
TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(series1);
dataset.addSeries(series2);
XYPlot plot = new XYPlot(dataset, new DateAxis(), new NumberAxis(), null);
// plot.setRenderer(new XYAreaRenderer(XYAreaRenderer.AREA));
plot.setRenderer(new StackedXYAreaRenderer(StackedXYAreaRenderer.AREA));
JFreeChart chart = new JFreeChart(plot);
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
setContentPane(chartPanel);
}
}