Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to remove extra space between textfield in JasperReports?

I have created three text field in Header. I have put parameter in all textField elements. When I'm not calling one of three parameter of three textField elements. It will show 2 textField elements. The problem now is there are space between the text fields.

How to remove the space?

This is my code:

<textField isBlankWhenNull="true">
    <reportElement x="0" y="18" width="555" height="35" isRemoveLineWhenBlank="true"/>
    <textElement textAlignment="Center">
        <font size="12"/>
    </textElement>
    <textFieldExpression><![CDATA[$P{daterangefrom}  && $P{daterangeto}  ?  "From ( " + $P{daterangefrom} + " - " + $P{daterangeto} + ")"
: $P{weeks}  && $P{monthy} && $P{yrs} ? "For week " + $P{weeks} +" "+ $P{monthy} +" "+ $P{yrs}
: $P{monthy}  && $P{yrs} ? "For monthly " +$P{monthy} +" "+ $P{yrs}
: $P{quarter}  &&  $P{yrs}  ? "For Quarter " + $P{quarter} +" "+$P{yrs}
: $P{yrs}  ? "For " + $P{yrs}
: null]]>
    </textFieldExpression>
</textField>

This is mine result:

enter image description here

like image 855
Amin SCO Avatar asked Apr 09 '12 10:04

Amin SCO


1 Answers

You can use 3 textField elements with isRemoveLineWhenBlank property set to true value.

The sample (jrxml file):

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport .. topMargin="0" bottomMargin="0">
    <parameter name="parameter1" class="java.lang.String">
        <defaultValueExpression><![CDATA[null]]></defaultValueExpression>
    </parameter>
    <parameter name="parameter2" class="java.lang.String">
        <defaultValueExpression><![CDATA[null]]></defaultValueExpression>
    </parameter>
    <parameter name="parameter3" class="java.lang.String">
        <defaultValueExpression><![CDATA[null]]></defaultValueExpression>
    </parameter>
    <title>
        <band height="102" splitType="Stretch">
            <textField isBlankWhenNull="true">
                <reportElement x="163" y="9" width="100" height="20" isRemoveLineWhenBlank="true"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement/>
                <textFieldExpression><![CDATA[$P{parameter1} == null ? null : "Parameter1: " + $P{parameter1}]]></textFieldExpression>
            </textField>
            <textField isBlankWhenNull="true">
                <reportElement x="163" y="29" width="100" height="20" isRemoveLineWhenBlank="true"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement/>
                <textFieldExpression><![CDATA[$P{parameter2} == null ? null : "Parameter2: " + $P{parameter2}]]></textFieldExpression>
            </textField>
            <textField isBlankWhenNull="true">
                <reportElement x="163" y="49" width="100" height="20" isRemoveLineWhenBlank="true"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement/>
                <textFieldExpression><![CDATA[$P{parameter3} == null ? null : "Parameter3: " + $P{parameter3}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement x="163" y="73" width="100" height="20"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement/>
                <text><![CDATA[Static text]]></text>
            </staticText>
            <line>
                <reportElement x="63" y="6" width="447" height="1"/>
            </line>
            <line>
                <reportElement x="73" y="96" width="447" height="1"/>
            </line>
        </band>
    </title>
</jasperReport>

The report design in iReport: Report's design in iReport

For the parameter1=null, parameter2=null, parameter1=value3 the result will be: The result in iReport (preview mode)

UPDATE

For solving the problem of moving up the textField in case the element above was hide you can use the Frame container. You should add 2 frames (one per column) and put 2 textField elements (2 rows) in each frame.

The sample (jrxml file):

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport .. topMargin="0" bottomMargin="0">
    <parameter name="par1" class="java.lang.String">
        <defaultValueExpression><![CDATA[null]]></defaultValueExpression>
    </parameter>
    <parameter name="par2" class="java.lang.String">
        <defaultValueExpression><![CDATA[null]]></defaultValueExpression>
    </parameter>
    <parameter name="par3" class="java.lang.String">
        <defaultValueExpression><![CDATA[null]]></defaultValueExpression>
    </parameter>
    <parameter name="par4" class="java.lang.String">
        <defaultValueExpression><![CDATA[null]]></defaultValueExpression>
    </parameter>
    <title>
        <band height="80" splitType="Stretch">
            <line>
                <reportElement x="10" y="6" width="520" height="1"/>
            </line>
            <line>
                <reportElement x="10" y="72" width="520" height="1"/>
            </line>
            <frame>
                <reportElement x="329" y="10" width="172" height="59"/>
                <frame>
                    <reportElement x="13" y="3" width="60" height="54"/>
                    <textField isBlankWhenNull="true">
                        <reportElement x="1" y="20" width="52" height="20" isRemoveLineWhenBlank="true"/>
                        <box>
                            <topPen lineWidth="1.0"/>
                            <leftPen lineWidth="1.0"/>
                            <bottomPen lineWidth="1.0"/>
                            <rightPen lineWidth="1.0"/>
                        </box>
                        <textElement/>
                        <textFieldExpression><![CDATA[$P{par3} == null ? null : "P3: " + $P{par3}]]></textFieldExpression>
                    </textField>
                    <textField isBlankWhenNull="true">
                        <reportElement x="1" y="0" width="52" height="20" isRemoveLineWhenBlank="true"/>
                        <box>
                            <topPen lineWidth="1.0"/>
                            <leftPen lineWidth="1.0"/>
                            <bottomPen lineWidth="1.0"/>
                            <rightPen lineWidth="1.0"/>
                        </box>
                        <textElement/>
                        <textFieldExpression><![CDATA[$P{par1} == null ? null : "P1: " + $P{par1}]]></textFieldExpression>
                    </textField>
                </frame>
                <frame>
                    <reportElement x="73" y="3" width="70" height="54"/>
                    <textField isBlankWhenNull="true">
                        <reportElement x="1" y="0" width="52" height="20" isRemoveLineWhenBlank="true"/>
                        <box>
                            <topPen lineWidth="1.0"/>
                            <leftPen lineWidth="1.0"/>
                            <bottomPen lineWidth="1.0"/>
                            <rightPen lineWidth="1.0"/>
                        </box>
                        <textElement/>
                        <textFieldExpression><![CDATA[$P{par2} == null ? null : "P2: " + $P{par2}]]></textFieldExpression>
                    </textField>
                    <textField isBlankWhenNull="true">
                        <reportElement x="1" y="20" width="52" height="20" isRemoveLineWhenBlank="true"/>
                        <box>
                            <topPen lineWidth="1.0"/>
                            <leftPen lineWidth="1.0"/>
                            <bottomPen lineWidth="1.0"/>
                            <rightPen lineWidth="1.0"/>
                        </box>
                        <textElement/>
                        <textFieldExpression><![CDATA[$P{par4} == null ? null : "P4: " + $P{par4}]]></textFieldExpression>
                    </textField>
                </frame>
            </frame>
            <textField isBlankWhenNull="true">
                <reportElement x="10" y="30" width="52" height="20" isRemoveLineWhenBlank="true"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement/>
                <textFieldExpression><![CDATA[$P{par3} == null ? null : "P3: " + $P{par3}]]></textFieldExpression>
            </textField>
            <textField isBlankWhenNull="true">
                <reportElement x="10" y="10" width="52" height="20" isRemoveLineWhenBlank="true"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement/>
                <textFieldExpression><![CDATA[$P{par1} == null ? null : "P1: " + $P{par1}]]></textFieldExpression>
            </textField>
            <textField isBlankWhenNull="true">
                <reportElement x="64" y="10" width="52" height="20" isRemoveLineWhenBlank="true"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement/>
                <textFieldExpression><![CDATA[$P{par2} == null ? null : "P2: " + $P{par2}]]></textFieldExpression>
            </textField>
            <textField isBlankWhenNull="true">
                <reportElement x="64" y="30" width="52" height="20" isRemoveLineWhenBlank="true"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement/>
                <textFieldExpression><![CDATA[$P{par4} == null ? null : "P4: " + $P{par4}]]></textFieldExpression>
            </textField>
        </band>
    </title>
</jasperReport>

The report design in iReport: The design in iReport. Two cases

For the par1=null, par2=2, par3=3, par4=4 the result will be: The result in iReport preview. Two cases

You can compare the results - left side is done without using frame and the right side with frame elements.

like image 122
Alex K Avatar answered Nov 03 '22 13:11

Alex K