Null Pointer Exception while refreshing the chart
Posted: Tue Sep 06, 2016 7:34 pm
Hi,
I have a Swing panel with couple of drop down inputs which will fetch the values and then refresh a chart. The chart initially loads fine and when I change the input and get the data again, I am getting a null pointer exception as shown below.
This is happening only if i change the inputs and get new data.Even though the chart object is resetting well, it somehow is being set to null. Here is my refresh code
I have a Swing panel with couple of drop down inputs which will fetch the values and then refresh a chart. The chart initially loads fine and when I change the input and get the data again, I am getting a null pointer exception as shown below.
Code: Select all
UNCAUGHT EXCEPTION OCCURED IN THREAD: AWT-EventQueue-0 CLASS java.lang.NullPointerException CAUSE: java.lang.NullPointerException
java.lang.NullPointerException
at com.steema.teechart.styles.Custom.checkPointInLine(Custom.java:537)
at com.steema.teechart.styles.Custom.clicked(Custom.java:622)
at com.steema.teechart.styles.Series.clicked(Series.java:3352)
at com.steema.teechart.tools.DragPoint.clickedSeries(DragPoint.java:149)
at com.steema.teechart.tools.DragPoint.mouseEvent(DragPoint.java:197)
at com.steema.teechart.Chart.broadcastMouseEvent(Chart.java:1014)
at com.steema.teechart.Chart.broadcastMouseEvent(Chart.java:1003)
at com.steema.teechart.Chart.mouseMoved(Chart.java:1381)
at com.steema.teechart.TChart.processMouseMotionEvent(TChart.java:1448)
at java.awt.Component.processEvent(Component.java:6294)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4546)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Code: Select all
protected void initChart() {
d_chart = new TChart();
d_chart.getFooter().setVisible(false);
d_chart.getHeader().setVisible(false);
d_chart.getAspect().setView3D(false);
Gradient g=d_chart.getPanel().getGradient();
g.setDirection(GradientDirection.VERTICAL);
g.setEndColor(new com.steema.teechart.drawing.Color(109,109,109));
g.setMiddleColor(new com.steema.teechart.drawing.Color(149,202,255));
g.setStartColor(new com.steema.teechart.drawing.Color(0,115,230));
g.setVisible(true);
d_chart.getAxes().getLeft().getAxisPen().setWidth(1);
d_chart.getAxes().getBottom().getAxisPen().setWidth(1);
d_chart.getHeader().getFont().setColor(new com.steema.teechart.drawing.Color(226,226,226));
ColorPalettes.applyPalette(d_chart.getChart(), 10);
}
public void redrawChart(){
d_chart.removeAllSeries();
cop_DateOnly start = d_dm.getStart();
cop_DateOnly end = d_dm.getEnd();
Line eLine = new Line(d_chart.getChart());
eLine.setCursor(Cursor.HAND);
eLine.setTitle("Hourly Weather");
SeriesPointer tmpPointer = eLine.getPointer();
tmpPointer.getBrush().setColor(Color.BLUE);
tmpPointer.setInflateMargins(true);
tmpPointer.getPen().setColor(Color.LIME);
tmpPointer.setVisible(true);
d_tool = new DragPoint(eLine);
d_tool.setStyle(DragPointStyle.Y);
// set the event...
d_tool.addDragListener( new DragListener() {
public void dragMoving(ChangeEvent e) {
// d_chartGrid.repaint();
}
public void dragFinished(ChangeEvent e){
updateDataModel();
}
});
d_chartGrid = new ChartGrid(d_chart.getChart());
d_chartGrid.setShowFields(true);
// tell the chartGrid to show both the X and Y
d_chartGrid.setShowXValues(ChartGridXValues.YES);
// do not show labels at chart chartGrid
d_chartGrid.setShowLabels(false);
int i = 0;
if(!cop_ArrayUtils.isEmpty(d_dm.getForecastedWeatherData()))
{
long st = start.getTime();
for (bop_ForecastedWeatherHour sample : d_dm.getForecastedWeatherData()) {
long time = sample.getForecastFor().getTime();
time = time - st;
time = time / (1000 * 60 * 60);
if (sample.getForecastFor().compareTo(start) >= 0 && sample.getForecastFor().compareTo(end) <= 0) {
eLine.add((double) time, sample.getTemperature());
}
}
}
double maxValue = d_chart.getAxes().getLeft().getMaxYValue();
double minValue = d_chart.getAxes().getLeft().getMinYValue();
d_chart.getAxes().getLeft().setAutomatic(false);
d_chart.getAxes().getLeft().setMaximum(maxValue + 10);
d_chart.getAxes().getLeft().setMinimum(minValue - 10);
eLine.repaint();
drawStaticWeatherLine();
d_chart.repaint();
}