Jasper Chart Customizer для отображения вертикальной линии на основе значения категории - PullRequest
3 голосов
/ 13 марта 2020

Я использую мастер диаграмм элементов Line Chart для отображения линейной диаграммы в JasperReport на основе данных, считанных из файла CSV. Линейный график вышел хорошо. Проблема в том, чтобы я отображал маркер вертикальной линии на основе определенного значения категории. Я попытался использовать многоосевую диаграмму и настроить второй график, как мне было нужно. Но в тот момент, когда я скомбинировал его, он либо сделает мой первый линейный график беспорядочным, либо мой второй линейный график станет горизонтальным!

Итак, я попытался использовать Chart Customizer, экспортировать в jar, добавить его в Build Path, добавить его в свойствах Chart Customizer. Но он не отображает то, что я хотел. Ниже приведен код:

public class Lot_VerticalLine implements JRChartCustomizer {

    public static void main(final String args) { 
       @SuppressWarnings("unused")
       final Lot_VerticalLine demo = new Lot_VerticalLine();
       //demo.customize(null, null);
    }

    public void customize(JFreeChart jfc, JRChart jrc)  {
        CategoryMarker marker = new CategoryMarker("Category Axis");
        CategoryPlot plot = jfc.getCategoryPlot();

        marker.setLabel("Band Y");
        marker.setPaint(Color.red);
        marker.setOutlinePaint(Color.red);
        marker.setDrawAsLine(true);
        marker.setAlpha(0.5f);
        marker.setLabelAnchor(RectangleAnchor.TOP);
        marker.setLabelTextAnchor(TextAnchor.TOP_CENTER);
        marker.setLabelOffsetType(LengthAdjustmentType.CONTRACT);
        plot.addDomainMarker(marker, Layer.BACKGROUND);
    }

    private void addMarker(Plot plot, Marker marker) {
            ((CategoryPlot) plot).addDomainMarker((CategoryMarker) marker);
            CategoryItemRenderer renderer = (CategoryItemRenderer) ((CategoryPlot) plot).getRenderer();
    }
}

Что я сделал не так?

...