2016-06-15 2 views
2

저는 Studio를 사용하여 JasperReports의 보고서를 작성하고 있습니다. 선 차트의 너비를 늘려야합니다 (기본값은 너무 가늘 릅니다). JasperReports가 Jfeechart를 차트로 사용한다는 것을 알기 전까지이 코드를 검색하여 사용자 지정 작업을 수행했습니다.jfree chart org.jfree.chart.plot.CategoryPlot을 org.jfree.chart.plot.XYPlot으로 캐스트 할 수 없습니다.

public class TSChartCustomizer extends JRAbstractChartCustomizer { 
    public void customize(JFreeChart chart, JRChart jasperChart) { 
     XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) chart.getXYPlot().getRenderer(); 
     BasicStroke stroke = new BasicStroke(3f); 
     renderer.setSeriesStroke(1, stroke); 
    } 
} 

위의 클래스를 jar 파일에 빌드하고 추가 한 다음 jasper 프로젝트에 추가했습니다. 그리고 차트 속성에서 사용자 정의 클래스의 클래스를 선택할 수 있습니다. 하는

PS 아래의 보고서 코드입니다 ... 내가 문제가 코드와 아마 생각하지만, 내가 JFreeChart를 모르는

java.lang.ClassCastException: org.jfree.chart.plot.CategoryPlot cannot be cast to org.jfree.chart.plot.XYPlot 

: 나는 보고서를 실행할 때이 오류가있어 매우 간단한 데모 용 :

<?xml version="1.0" encoding="UTF-8"?> 
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="test6" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="f147421f-bbe6-42bd-b26e-7f4f7cee333a"> 
    <queryString> 
     <![CDATA[select 'p1' as prod, 'm1' as mon, 10 as num 
union all select 'p1' as prod, 'm2' as mon, 20 as num 
union all select 'p1' as prod, 'm3' as mon, 30 as num]]> 
    </queryString> 
    <field name="prod" class="java.lang.String"/> 
    <field name="mon" class="java.lang.String"/> 
    <field name="num" class="java.lang.Integer"/> 
    <background> 
     <band splitType="Stretch"/> 
    </background> 
    <summary> 
     <band height="325" splitType="Stretch"> 
      <lineChart> 
       <chart evaluationTime="Report"> 
        <reportElement x="178" y="125" width="200" height="200" uuid="124ec6e6-b32d-477d-84a4-36c8d4df3ac2"/> 
        <chartTitle/> 
        <chartSubtitle/> 
        <chartLegend/> 
       </chart> 
       <categoryDataset> 
        <categorySeries> 
         <seriesExpression><![CDATA[$F{prod}]]></seriesExpression> 
         <categoryExpression><![CDATA[$F{mon}]]></categoryExpression> 
         <valueExpression><![CDATA[$F{num}]]></valueExpression> 
        </categorySeries> 
       </categoryDataset> 
       <linePlot> 
        <plot/> 
        <categoryAxisFormat> 
         <axisFormat/> 
        </categoryAxisFormat> 
        <valueAxisFormat> 
         <axisFormat/> 
        </valueAxisFormat> 
       </linePlot> 
      </lineChart> 
     </band> 
    </summary> 
</jasperReport> 

답변

1

차트 차트 사용자 정의 도구는 범주 차트에서 작동하지 않으며 XY 또는 시간표 차트에 사용됩니다.

public class TSChartCustomizer extends JRAbstractChartCustomizer { 
    public void customize(JFreeChart chart, JRChart jasperChart) { 
     AbstractCategoryItemRenderer renderer = (AbstractCategoryItemRenderer) chart.getCategoryPlot().getRenderer(); 
     BasicStroke stroke = new BasicStroke(3f); 
     renderer.setSeriesStroke(0, stroke); 
    } 
} 
: 당신이 (또한 일련의 지수가 0 기반 있습니다) 다음과 같은 뭔가가 필요합니다 카테고리 차트의