1

XYPlotシリーズを変えずに色違いの形にすることは可能ですか?

1つのアイデアは拡張するXYLineAndShapeRendererことですが、描画されたときに単一の形状の色をどこで変更できますか?

4

1 に答える 1

1

私は自分で解決策を見つけました

public class QualityChartRenderer extends XYLineAndShapeRenderer {

    private int dataSeries;

    public QualityChartRenderer(double high, double low, int dataSeries) {
        this.dataSeries = dataSeries;
    }

    @Override
    public void drawItem(Graphics2D g2, XYItemRendererState state,
            Rectangle2D dataArea, PlotRenderingInfo info, XYPlot plot,
            ValueAxis domainAxis, ValueAxis rangeAxis, XYDataset dataset,
            int series, int item, CrosshairState crosshairState, int pass) {

        Paint paint = getSeriesPaint(series);

        if (series == dataSeries && item < 2) {
            setSeriesPaint(series, Color.RED);
        }
        super.drawItem(g2, state, dataArea, info, plot, domainAxis, rangeAxis,
                dataset, series, item, crosshairState, pass);
        setSeriesPaint(series, paint);
    }

}

描かれた図形ごとに、自分の状態をチェックし (ここでは のみitem < 2)、シリーズ全体の色を変更します。描画後に元に戻します。

これはハックのように感じます。フレームワーク内でより洗練されたソリューションはありますか?

于 2013-06-26T10:04:35.097 に答える