元素位置无效

The element position is invalid

我正在使用 iReport 3.7.6

如果您查看下图,您会看到一条警告。警告说: 警告元素位置无效

元素超出列表内容高度:y = 275,高度= 30,列表内容高度= 30。

<componentElement>
                <reportElement positionType="Float" x="0" y="217" width="555" height="15" />
                <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical" ignoreWidth="false">
                    <datasetRun subDataset="deliverableProductsDataset" >
                        <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{deliverableProducts})]]></dataSourceExpression>
                    </datasetRun>
                    <jr:listContents height="30" width="475" >

                            <textField isStretchWithOverflow="true">
                                <reportElement stretchType="RelativeToBandHeight" x="23" y="275" width="257" height="30"/>
                                <box topPadding="5" leftPadding="5" bottomPadding="5" rightPadding="5">
                                    <bottomPen lineWidth="1.0"/>
                                    <rightPen lineWidth="1.0"/>
                                </box>
                                <textElement>
                                    <font fontName="DejaVu Sans"/>
                                </textElement>
                                <textFieldExpression class="java.lang.String"><![CDATA[$F{name}]]></textFieldExpression>
                            </textField>

                    </jr:listContents>
                </jr:list>
            </componentElement>

您的布局有两个问题。

  1. 元素 jr:list 的高度为 15,元素 jr:listContentstextField 的高度均为 30。将 jr:list 的高度增加到 30(或更高)或减少 jr:listContentstextField 高度为 15(或更低)。
  2. textField 元素的位置应该相对于 jr:list。因此,由于 jr:list 的高度为 15,因此您不能使用 y=275。

这是一个稍微修改过的版本。适合您的需求:

<componentElement>
    <reportElement x="0" y="217" width="555" height="30"/>
    <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical">
        <datasetRun subDataset="dataset1">
            <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource(1)]]></dataSourceExpression>
        </datasetRun>
        <jr:listContents height="30" width="555">
            <textField isStretchWithOverflow="true">
                <reportElement stretchType="RelativeToBandHeight" x="0" y="0" width="257" height="30"/>
                <box topPadding="5" leftPadding="5" bottomPadding="5" rightPadding="5">
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement>
                    <font fontName="DejaVu Sans"/>
                </textElement>
                <textFieldExpression class="java.lang.String"><![CDATA[$F{name}]]></textFieldExpression>
            </textField>
        </jr:listContents>
    </jr:list>
</componentElement>