2013-10-22 35 views
0

我試着通過創建子類覆蓋的XYLineAndShapeRenderergetItemPaint()方法:ClassCastException異常試圖延長XYLineAndShapeRenderer(JFreeChart的)時

private class MultiRenderer extends XYLineAndShapeRenderer{ 
     @Override 
     public Paint getItemPaint(int row, int column) { 
      if(row==2){ 
       float x = getAmplitude()[column]; 
       return floatToColor(x); 
      } 
      return super.getItemPaint(row, column); 
     } 
     private Color floatToColor(float val){...} 
} 

,並呼籲:

XYPlot xyPlot = (XYPlot) myJFreeChartObject.getPlot(); 
MultiRenderer r = (MultiRenderer) xyPlot.getRenderer(); 

但即時得到一個ClassCastException有沒有一種方法可以正確地轉換或覆蓋getItemPaint而不創建子類?我試圖繪製2系列作爲常規線圖和第三系列沒有一條線和不同的顏色點。前兩個系列應該有一條線,但沒有點標記。

getAmplitude()只是返回浮點數的0和1

+0

在你的榜樣,我不能看到'xyPlot .setRenderer(新MultiRenderer());'你可以prived一個[SSCCE(http://sscce.org/ ) – GrahamA

回答

1

之間的陣列既可以使用一個Anonymous Inner Class

plot.setRenderer(new XYLineAndShapeRenderer() {   

    @Override 
    public Paint getItemPaint(int row, int column) { 
    if(row==2){ 
     float x = getAmplitude()[column]; 
     return floatToColor(x); 
    } 
    return super.getItemPaint(row, column); 
} 

private Color floatToColor(float val){...} 

});

或者使用DrawingSupplierplot