如何实现动态细节带高度(取决于文本长度)?

时间:2016-03-15 08:34:39

标签: java jasper-reports

我在尝试为此找到解决方案时遇到了一些麻烦。

在我的报告中,我有一个子报告,其功能是打印与我正在打印的文档相关的人员的姓名和姓氏。

此子报告只有一个 textfield ,其中名称和姓氏是从 Java 代码中导入的。

问题在于,只要名字和姓氏太长而无法在一行中打印,我必须完成在第二行中打印它们。

我尝试了两种解决方法(请忽略其他字段, nameAndSurname 是相关的字段):

1。 单个细节带,两条线的高度合适。

One line

2. 双重细节乐队。通过 Java 代码,我剪切了第二个姓氏并将其导入第二个姓名和姓氏字段。第二个细节仅在条件(nameAndSurnameTwo!=null)为真时打印。

enter image description here

我还没办法解决这个问题。问题是,细节带在不打印第二行的情况下继续占据第二行空间。

在简历中,我需要的是一个根据我必须打印的姓名长度动态改变其高度的乐队。如果这些很短,只需一条线。只有当姓名和姓氏的长度太长时,它才会占用两个行空间。

1 个答案:

答案 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