JasperReports:对于staticText,positionType =''Float'的工作是什么?

时间:2008-12-05 20:07:27

标签: jasper-reports

我需要让staticText浮动到另一个具有可变高度的元素下面。我正在从书JasperReports for Java Programmers中取样。它说可以做到这一点。与我的示例的不同之处在于我在textFieldExpression中使用了一个硬编码字符串,它们使用$ F {}字段。

<textField isStretchWithOverflow="true" hyperlinkType="None">
    <reportElement x="0" y="0" width="100" height="24"/>
    <box>
        <pen lineWidth="0.5" lineStyle="Solid"/>
    </box>
    <textElement/>
    <textFieldExpression class="java.lang.String"><![CDATA["jjjjjjjjjjj oooooooooo uuuuuuuuuu aaaaaaaaaa xxxxxxxxx u ttttt"]]></textFieldExpression>
</textField>
<staticText>
    <reportElement positionType="Float" x="0" y="25" width="500" height="30"/>
    <box>
        <pen lineWidth="0.5" lineStyle="Solid"/>
    </box>
    <textElement/>
    <text><![CDATA[ This staticText element has a positionType of "Float" ppp ]]></text>
</staticText>

它表示当您使用positionType="Float"时,会忽略y属性,因为staticText位于textField下方。这似乎有效,但是......他们可能是我的BS吗? textField的y = 0,高度= 24。 staticText的y = 25。巧合?如果我更改staticText的y,很明显它不会被忽略:元素位于我告诉它的任何地方。没有漂浮!!! 从书中引用:

As we can see, setting the positionType attribute of <reportElement> to Float made JasperReports ignore the y position of the <staticText> element, which was pushed down by the stretched <textField> element.

不,我们不知道它是如何被忽略的,因为y = 25是我们所期望的! positionType="Float"是否适用于staticText? 谢谢!

2 个答案:

答案 0 :(得分:6)

我对浮动性质的理解是浮动物体会在必要时向下移动,但如果前一个物体小于预期,它就不会向上移动。

我不记得在必要时浮动对象实际上没有浮动的任何问题,无论它们是静态文本还是文本字段。

另一方面,如果您发现文本字段有效,则可以使用它来显示静态文本,方法是在文本字段值中将文本放在引号中(使其成为Java对象)。

答案 1 :(得分:3)

This answer适用(不同的元素,相同的情况)。

我从书中的样本中没有看到的一件事是textField的声明高度(24)小于元素拉伸时的实际高度。因此,staticText上的y =“25”将映射到其实际位置之上;该元素实际上已经下降了!