我在尝试为此找到解决方案时遇到了一些麻烦。
在我的报告中,我有一个子报告,其功能是打印与我正在打印的文档相关的人员的姓名和姓氏。
此子报告只有一个 textfield ,其中名称和姓氏是从 Java 代码中导入的。
问题在于,只要名字和姓氏太长而无法在一行中打印,我必须完成在第二行中打印它们。
我尝试了两种解决方法(请忽略其他字段, nameAndSurname 是相关的字段):
1。 单个细节带,两条线的高度合适。
2. 双重细节乐队。通过 Java 代码,我剪切了第二个姓氏并将其导入第二个姓名和姓氏字段。第二个细节仅在条件(nameAndSurnameTwo!=null
)为真时打印。
我还没办法解决这个问题。问题是,细节带在不打印第二行的情况下继续占据第二行空间。
在简历中,我需要的是一个根据我必须打印的姓名长度动态改变其高度的乐队。如果这些很短,只需一条线。只有当姓名和姓氏的长度太长时,它才会占用两个行空间。
答案 0 :(得分:1)
通常使用isStretchWithOverflow
解决方案正在使用:一条行具有适当高度的单个细节带。将textField上的属性设置为isStretchWithOverflow="true"
示例强>
<detail>
<band height="20">
<textField isStretchWithOverflow="true">
<reportElement stretchType="RelativeToTallestObject" x="0" y="0" width="133" height="20" uuid="728a0280-ae29-425a-ab57-3ac78855de58"/>
<textFieldExpression><![CDATA[$F{nameAndSurname}]]></textFieldExpression>
</textField>
</band>
</detail>
我还建议在所有其他textElements上使用stretchType="RelativeToTallestObject"
,以便在textField溢出时它们也会延伸。
此外,如果您想强制拉伸,您希望例如Surname显示在第二行,只需添加\n
示例Petter\nFriberg
或使用html <br/>
设置标记HTML