当在jasper报表中动态看不到组件时,如何避免两者之间的间隔?

时间:2018-09-18 17:09:44

标签: jasper-reports

我这里有11个staticText组件。当我只显示第一个和八个组件时,我发现它们之间有巨大的差距。每个组件之间都没有空格。 我的假设是组件上的'isRemoveLineWhenBlank =“ true”'将允许下一个组件在未显示的位置显示。但这不是在这里发生。

下面是使用的jasper报告版本:

<dependency>
     <groupId>net.sf.jasperreports</groupId>
     <artifactId>jasperreports-fonts</artifactId>
     <version>6.0.0</version>
</dependency>

下面是代码:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.6.0.final using JasperReports Library version 6.6.0  -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="sample" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="acaa0a15-dc0f-462c-8d16-14f0b7325696">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
    <summary>
        <band height="581" splitType="Prevent">
            <staticText>
                <reportElement positionType="Float" x="0" y="19" width="381" height="41" isRemoveLineWhenBlank="true" uuid="9547d877-993c-4bb4-becc-cf70a0cc1bc2">
                    <printWhenExpression><![CDATA[true]]></printWhenExpression>
                </reportElement>
                <text><![CDATA[Text11111111111111111111]]></text>
            </staticText>
            <staticText>
                <reportElement positionType="Float" x="0" y="60" width="381" height="41" isRemoveLineWhenBlank="true" uuid="9e7dbe2e-2fed-41c8-82ce-c0c6886c8eda">
                    <printWhenExpression><![CDATA[false]]></printWhenExpression>
                </reportElement>
                <text><![CDATA[Text22222222222222222]]></text>
            </staticText>
            <staticText>
                <reportElement positionType="Float" x="0" y="100" width="381" height="41" isRemoveLineWhenBlank="true" uuid="75d03d01-ae6f-40e3-92d4-bed93a7cf671">
                    <printWhenExpression><![CDATA[false]]></printWhenExpression>
                </reportElement>
                <text><![CDATA[Text3333333333333]]></text>
            </staticText>
            <staticText>
                <reportElement positionType="Float" x="0" y="260" width="381" height="41" isRemoveLineWhenBlank="true" uuid="d351c771-3c5f-4318-9a47-9363831908b6">
                    <printWhenExpression><![CDATA[false]]></printWhenExpression>
                </reportElement>
                <text><![CDATA[7777777777777777777]]></text>
            </staticText>
            <staticText>
                <reportElement positionType="Float" x="0" y="140" width="381" height="41" isRemoveLineWhenBlank="true" uuid="cfa2937f-8ddd-4608-95e5-f3ec1d0dbea2">
                    <printWhenExpression><![CDATA[false]]></printWhenExpression>
                </reportElement>
                <text><![CDATA[4444444444444444444]]></text>
            </staticText>
            <staticText>
                <reportElement positionType="Float" x="0" y="180" width="381" height="41" isRemoveLineWhenBlank="true" uuid="9e69343a-e1e7-4af9-90ae-d5d7c128a30a">
                    <printWhenExpression><![CDATA[false]]></printWhenExpression>
                </reportElement>
                <text><![CDATA[55555555555555555555555]]></text>
            </staticText>
            <staticText>
                <reportElement positionType="Float" x="0" y="220" width="381" height="41" isRemoveLineWhenBlank="true" uuid="63d16d03-d637-406c-b128-06e8741a927f">
                    <printWhenExpression><![CDATA[false]]></printWhenExpression>
                </reportElement>
                <text><![CDATA[66666666666666666]]></text>
            </staticText>
            <staticText>
                <reportElement positionType="Float" x="0" y="300" width="381" height="41" isRemoveLineWhenBlank="true" uuid="2f7e0222-a2be-47ff-be3c-3d404c40ab1c">
                    <printWhenExpression><![CDATA[true]]></printWhenExpression>
                </reportElement>
                <text><![CDATA[888888888888888888]]></text>
            </staticText>
            <staticText>
                <reportElement positionType="Float" x="0" y="340" width="381" height="41" isRemoveLineWhenBlank="true" uuid="d87a01b5-f041-4c41-83e9-57b2e350f5b2">
                    <printWhenExpression><![CDATA[false]]></printWhenExpression>
                </reportElement>
                <text><![CDATA[999999999999999999999999]]></text>
            </staticText>
            <staticText>
                <reportElement positionType="Float" x="0" y="380" width="381" height="41" isRemoveLineWhenBlank="true" uuid="b2017166-a731-4ebf-86f9-42a9dfe9d95a">
                    <printWhenExpression><![CDATA[false]]></printWhenExpression>
                </reportElement>
                <text><![CDATA[1010101010101010]]></text>
            </staticText>
            <staticText>
                <reportElement positionType="Float" x="0" y="420" width="381" height="41" isRemoveLineWhenBlank="true" uuid="65c6b70e-7e12-4d38-b9d3-b9456e77c1e7">
                    <printWhenExpression><![CDATA[false]]></printWhenExpression>
                </reportElement>
                <text><![CDATA[11 11 11 11 11 11 11 11 11 11 11 ]]></text>
            </staticText>
        </band>
    </summary>
</jasperReport>

以下是显示差距的屏幕截图:

enter image description here

splitType“ Prevent”,“ Immediate”和“ Stretch”的输出相同。请帮忙。

2 个答案:

答案 0 :(得分:1)

该间隙由每个staticText的额外空间产生。当您在height="41"上更改height="16"时,差距将很小。

但是在这种情况下,每个可见文本后都没有空格。如果要在每个可见的文本后留空行,则可以使用textFieldstaticText结尾的\n代替isStretchWithOverflow="true"(不支持带溢出的拉伸) 。例如:

<textField isStretchWithOverflow="true">
    <reportElement positionType="Float" isPrintRepeatedValues="false" x="300" y="0" width="381" height="16" isRemoveLineWhenBlank="true" isPrintWhenDetailOverflows="true" uuid="2bef002c-8a26-4572-946a-d8a0e4116baa">
        <printWhenExpression><![CDATA[true]]></printWhenExpression>
    </reportElement>
    <textFieldExpression><![CDATA["Text Field"]]></textFieldExpression>
</textField>

答案 1 :(得分:1)

这与splitType无关,要使用的2个参数是

  1. isRemoveLineWhenBlank="true",删除组件

  2. positionType="Float",使组件相对于其他组件浮动。

然后您需要进行正确的设计,组件之间的空间为0。

您的问题是组件之间的-1间距(y相差为40但高度为41),将所有staticText元素中的高度切换为40,这是输出。

output

在其余组件之间看到的空间是高度40,如果要删除此高度,还需要执行与cgrimanswer中类似的操作。