尝试扩展XYLineAndShapeRenderer时的ClassCastException(JFreeChart)

时间:2013-10-22 21:02:32

标签: jfreechart classcastexception

我试图通过创建子类来覆盖getItemPaint() XYLineAndShapeRenderer方法:

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系列作为常规线图和第3系列没有线和不同的颜色点。前两个系列应该有一条线但没有点标记。

注意getAmplitude()只返回0到1之间的浮点数组

1 个答案:

答案 0 :(得分: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){...}

});

或者使用DrawingSupplier作为plot