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

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

该子报表只有一个文本字段,其中的名称和姓氏是从Java代码导入的。

问题是,每当名称和姓氏太长而无法在一行中打印时,我必须完成在第二行中打印它们。

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

1.具有两个线的适当高度的单个细带。

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

2.双细节带。通过Java代码,我剪切了第二个姓氏并将其导入到“第二个姓氏和姓氏”字段中。仅当条件(nameAndSurnameTwo!=null)为true时才打印第二个详细信息。

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



我还没有解决办法。问题是,无论是否打印第二行,细节带都会占用第二行空间。

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

最佳答案

通常使用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>


我还建议在所有其他textElement上使用stretchType="RelativeToTallestObject",以便在textField溢出时它们也可以拉伸。

此外,如果您想强制拉伸,例如想让姓氏显示在第二行,只需添加\n示例Petter\nFriberg或使用html <br/>设置html标记。

10-04 23:33
查看更多