我找不到从JasperReports中的List动态更改单元格宽度的正确方法。
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
获取列表,但元素Object没有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>
在Jaspersoft Studio中,我可以从List:
更改属性窗口中的Cell Width答案 0 :(得分:2)
你必须做这样的事情:
JRComponentElement element = (JRComponentElement) bands[1].getElementByKey("compareList");
ListComponent component = (ListComponent) element.getComponent();
DesignListContents contents = (DesignListContents) component.getContents();
contents.setWidth(...);
请注意,这只会更改单元格的宽度。如果你还想让文本字段更宽,你必须明确地做;您可以通过contents.getElements()
获取元素。