0

我试图通过创建一个子类来覆盖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 系列没有线和不同的色点。前 2 个系列应该有一条线但没有点标记。

注意getAmplitude()只返回一个介于 0 和 1 之间的浮点数数组

4

1 回答 1

1

您可以使用匿名内部类

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){...}

});

或使用 aDrawingSupplier为您的plot

于 2013-10-24T08:02:53.983 回答