Как конвертировать число месяца в сокращении имени в отчете Jasper? - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть линейная диаграмма XY в JasperReports, и я использую диапазон в моей диаграмме для отображения месяцев, в настоящее время я использую эту конфигурацию и показываю значения от 1 до 12 в строке X:

Изображение текущего графика

<?xml version="1.0" encoding="UTF-8"?>
<property name="net.sf.jasperreports.customizer.class.1" value="net.sf.jasperreports.customizers.axis.DomainAxisCustomizer"/>
                    <property name="net.sf.jasperreports.customizer.1.tickUnit" value="1.0"/>
                    <propertyExpression name="net.sf.jasperreports.customizer.1.minValue"><![CDATA["1"]]></propertyExpression>
                    <propertyExpression name="net.sf.jasperreports.customizer.1.maxValue"><![CDATA["12"]]></propertyExpression>

, но мне нужно показать сокращение месяцев, например:

1 - JAN, 2- ФЕВРАЛЬ, 3 - МАР, ...

Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 24 сентября 2018

Вы можете реализовать свой собственный настройщик оси домена следующим образом:

public class DomainAxisWithMonthsCustomizer extends JRAbstractChartCustomizer {
    @Override
    public void customize(JFreeChart chart, JRChart jasperChart) {
        XYPlot plot = chart.getXYPlot();
        String[] shortMonths = new DateFormatSymbols().getShortMonths();
        SymbolAxis domainAxis = new SymbolAxis("Month",
                IntStream.rangeClosed(1, 12)
                        .mapToObj(m -> m + " - " + shortMonths[m - 1].toUpperCase())
                        .toArray(String[]::new));
        plot.setDomainAxis(domainAxis);
    }
}

И использовать его в своем шаблоне отчета:

<chart customizerClass="my.project.report.DomainAxisWithMonthsCustomizer">
...
</chart>
...