目前我使用该属性isStretchWithOverflow当文本字段中的内容太长时换行。有用。但我想知道如何确定它断线的方式。
下面是我的片段jrxml file:
<textField isStretchWithOverflow="true">
<reportElement positionType="Float" width="150" height="20"/>
<box leftPadding="15">
</box>
<textFieldExpression><![CDATA[$F{content}]]></textFieldExpression>
</textField>
对于像这样的内容
oh my god test="longstring" abcdefg hijk
我希望“longstring”被视为一个词。所以我的想象输出是
oh my god test=
"longstring" abcdefg
hijk
但实际输出是
oh my god test="
longstring" abcdefg
hijk
另一个问题也类似
原来的内容是
abc.def/hij/k.lmnopqrstu
I want
abc.def/
hij/k.
lmnopqrstu
但实际输出是
abc.
def/hij/k.
lmnopqrstu
遇到“/”时不断行
有什么办法可以让我做我想做的事吗?
net.sf.jasperreports.engine.fill.TextMeasurer 实现(net.sf.jasperreports.engine.fill.JRMeasuredText 接口)类使用由私有 RuleBasedBreakIterator 类实现的 java.text.BreakIterator 接口。 RuleBasedBreakIterator 读取 JDK 提供的文件,该文件定义要对其执行换行的字符。由于 RuleBasedBreakIterator 类是私有的,我还没有找到更改默认行为的简单方法。通过修改以下属性,可以用替代实现替换 net.sf.jasperreports.engine.fill.TextMeasurer:
#Default text measurer
net.sf.jasperreports.text.measurer.factory=default
net.sf.jasperreports.text.measurer.factory.default=net.sf.jasperreports.engine.fill.TextMeasurerFactory
在实践中,这可能是不可取的,除非您可以通过自定义在 JDK 中实现强大的中断逻辑。
对于某些人来说,另一种选择可能是使用不支持 ICU4J 的 IBM JDK,它提供了 RuleBasedBreakIterator 的可定制实现,如下所述:
http://sujitpal.blogspot.com/2008/05/tokenizing-text-with-icu4js.html http://sujitpal.blogspot.com/2008/05/tokenizing-text-with-icu4js.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)