Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 687, Size: 687
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at org.jfree.data.time.TimeSeries.getDataItem(TimeSeries.java:330)
at org.jfree.data.time.TimeSeriesCollection.getY(TimeSeriesCollection.java:502)
at org.jfree.data.xy.AbstractXYDataset.getYValue(AbstractXYDataset.java:92)
at org.jfree.data.xy.XYBarDataset.getYValue(XYBarDataset.java:204)
at org.jfree.chart.renderer.xy.XYBarRenderer.drawItem(XYBarRenderer.java:826)
at org.jfree.chart.plot.XYPlot.render(XYPlot.java:3738)
at org.jfree.chart.plot.XYPlot.draw(XYPlot.java:3310)
at org.jfree.chart.JFreeChart.draw(JFreeChart.java:1235)
at org.jfree.chart.ChartPanel.paintComponent(ChartPanel.java:1668)
at javax.swing.JComponent.paint(JComponent.java:1029)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5124)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:278)
at javax.swing.RepaintManager.paint(RepaintManager.java:1224)
at javax.swing.JComponent._paintImmediately(JComponent.java:5072)
at javax.swing.JComponent.paintImmediately(JComponent.java:4882)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:785)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:713)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:693)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:125)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
This is not a bug, the problem is that your code is updating the dataset off the EDT, and the chart is being repainted on the EDT. JFreeChart is not thread safe, so this will cause problems occasionally. Here is a revised version of your code that works fine (the important changes are (1) launching the app on the EDT and (2) using a Swing Timer to update the dataset, then everything happens on the EDT):
Full example programm which causes Exception
The Exception:
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 687, Size: 687
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at org.jfree.data.time.TimeSeries.getDataItem(TimeSeries.java:330)
at org.jfree.data.time.TimeSeriesCollection.getY(TimeSeriesCollection.java:502)
at org.jfree.data.xy.AbstractXYDataset.getYValue(AbstractXYDataset.java:92)
at org.jfree.data.xy.XYBarDataset.getYValue(XYBarDataset.java:204)
at org.jfree.chart.renderer.xy.XYBarRenderer.drawItem(XYBarRenderer.java:826)
at org.jfree.chart.plot.XYPlot.render(XYPlot.java:3738)
at org.jfree.chart.plot.XYPlot.draw(XYPlot.java:3310)
at org.jfree.chart.JFreeChart.draw(JFreeChart.java:1235)
at org.jfree.chart.ChartPanel.paintComponent(ChartPanel.java:1668)
at javax.swing.JComponent.paint(JComponent.java:1029)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5124)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:278)
at javax.swing.RepaintManager.paint(RepaintManager.java:1224)
at javax.swing.JComponent._paintImmediately(JComponent.java:5072)
at javax.swing.JComponent.paintImmediately(JComponent.java:4882)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:785)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:713)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:693)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:125)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
This is not a bug, the problem is that your code is updating the dataset off the EDT, and the chart is being repainted on the EDT. JFreeChart is not thread safe, so this will cause problems occasionally. Here is a revised version of your code that works fine (the important changes are (1) launching the app on the EDT and (2) using a Swing Timer to update the dataset, then everything happens on the EDT):
}
I am also face the similar problem in the Jfreechart. I have implement chart into the JApplet so I cant understand how to solved that problem.
I am also face the similar problem in the Jfreechart. I have implement chart into the JApplet so I cant understand how to solved that problem.