如何使用Java API动态更改JasperReports中列表中的单元格宽度
我找不到从JasperReports中的列表动态更改单元格宽度的正确方法如何使用Java API动态更改JasperReports中列表中的单元格宽度,java,jasper-reports,Java,Jasper Reports,我找不到从JasperReports中的列表动态更改单元格宽度的正确方法 final JasperDesign template = JRXmlLoader.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("report_tarif_comparison.jrxml")); final JRBand[] bands = template.getAllBands(); final JRElement e
final JasperDesign template = JRXmlLoader.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("report_tarif_comparison.jrxml"));
final JRBand[] bands = template.getAllBands();
final JRElement element = bands[1].getElementByKey("compareList");
我通过getElementByKey
获取列表,但元素对象没有setCellWidth
或setCellHeight
我的jrxml文件的一部分:
<jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Horizontal" ignoreWidth="false">
<datasetRun subDataset="compareTarif" uuid="03bdfbc4-19ae-47a1-a27e-bbacde25965f">
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{policies})]]></dataSourceExpression>
</datasetRun>
<jr:listContents height="494" width="138">
....//textfields
</jr:listContents>
</jr:list>
..//textfields
在Jaspersoft Studio中,我可以从列表中更改属性窗口中的单元格宽度:
您必须执行以下操作:
JRComponentElement=(JRComponentElement)条带[1]。getElementByKey(“compareList”);
ListComponent=(ListComponent)元素.getComponent();
DesignListContents=(DesignListContents)组件。getContents();
内容。设置宽度(…);
请注意,这只会更改单元格的宽度。如果您还想使内部的文本字段更宽,则必须显式地执行此操作;您可以通过contents.getElements()
获取元素,谢谢您的帮助:)。最后,元素没有方法getComponent()。但是我循环了带[1].getChildren()并证明该子级是否是JRDesignComponentElement的实例。然后我使用了getComponent()方法。