问题
I have fields in title and page header that have multiple lines. I want them to stretch vertically but the problem is the field below the stretched field is missing. I also grouped them using a frame.
The properties I set:
Position Type : Float
Stretch Type : Relative to Tallest Object
Stretch With Overflow : True
Please see below screen shot.
回答1:
You can try these properties of text : -
For first field (Cashier Name) of title band use this properties :-
Position Type- Fix Relative to Top
Stretch Type- Relative to Band Height
Stretch With Overflow - true
For the second field (Date) set these properties
Position Type- Fix Relative to Bottom
Stretch Type- No stretch
Stretch With Overflow- false
In this report you can see the properties if you run the report with Sample HSQL database in ireport :-
<?xml version="1.0" encoding="UTF-8"?>
<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="ward utilization" pageWidth="300" pageHeight="300" orientation="Landscape" columnWidth="280" leftMargin="10" rightMargin="10" topMargin="10" bottomMargin="10" uuid="85476864-df43-454c-83dd-9c1b475ec223">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<queryString>
<![CDATA[select * from orders]]>
</queryString>
<field name="ORDERID" class="java.lang.Integer"/>
<field name="CUSTOMERID" class="java.lang.String"/>
<field name="EMPLOYEEID" class="java.lang.Integer"/>
<field name="ORDERDATE" class="java.sql.Timestamp"/>
<field name="REQUIREDDATE" class="java.sql.Timestamp"/>
<field name="SHIPPEDDATE" class="java.sql.Timestamp"/>
<field name="SHIPVIA" class="java.lang.Integer"/>
<field name="FREIGHT" class="java.math.BigDecimal"/>
<field name="SHIPNAME" class="java.lang.String"/>
<field name="SHIPADDRESS" class="java.lang.String"/>
<field name="SHIPCITY" class="java.lang.String"/>
<field name="SHIPREGION" class="java.lang.String"/>
<field name="SHIPPOSTALCODE" class="java.lang.String"/>
<field name="SHIPCOUNTRY" class="java.lang.String"/>
<group name="bed"/>
<title>
<band height="42">
<textField isStretchWithOverflow="true">
<reportElement uuid="c438eefe-5415-409e-8e7c-c763a7305ae2" stretchType="RelativeToBandHeight" x="87" y="0" width="24" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{SHIPNAME}]]></textFieldExpression>
</textField>
<textField>
<reportElement uuid="83c8a0d7-af5f-43ec-88dd-7d923a5b2a28" positionType="FixRelativeToBottom" x="87" y="21" width="24" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{SHIPCITY}]]></textFieldExpression>
</textField>
</band>
</title>
回答2:
I see two possible solutions here.
based on tests reproducing your error, you can set the date field as float also and it will shift down as the previous label (cashier name) overflows. Unfortunately this is part of a solution because then the field date does not align with its label.
create a table and set those labels and fields as a table and let it handle the overflow naturally. I failed to test it without using a datasource but I'm sure you can pass it the current report's datasource and fetch the data you need from it and display that info on that table.
Let me know if it worked for you. Also, tell me what else did you try. I'm curious now :)
Good luck.
回答3:
Stretch Type : Relative to Tallest Object make verttical size of any items as maximal from all items. In this case previous element overlaps next (missing) item.
This is not need. Set stretch type = "No stretch". "Stretch with overflow = true" is enough for correct display items. (imho)
Solution: Put each pair label:field into individual frame. In this case label-fields will display in the corresponding rows
来源:https://stackoverflow.com/questions/24445831/how-to-properly-stretch-with-overflow-for-non-detail-band