【发布时间】:2018-04-20 04:31:50
【问题描述】:
我使用 iReport 4.5.1(我知道它太旧了,但它正在工作,我无权升级它)。 无论如何,我有一个具有以下值的文本字段:
$F{field1} + " — " + $F{field2}
field1 和 field 2 都是java.lang.String 类型。
由于 field1 和 field2 的长度都不是一致的,因此我检查了溢出属性为 TRUE 的拉伸。但问题是,当我为 field2 提供长文本时,其余部分位于 field1 下方,而我需要它从 field2 下方开始。
其实是这样的:
something for field1 — something very long
for field2
虽然我需要它:
something for field1 — something very long
for field2
如果我将$F{field1} 放在单独的文本字段中,因为它没有固定长度,有时在$F{field1} 之后会出现一个额外的空格,或者如果我将其带有溢出属性的拉伸设置为TRUE,$F{field1}出现在两行中,我也不喜欢它。
一般来说,我需要$F{field1}出现在一行中,之后只有一个空格,$F{field2}如果长度太长,则分成两行,并按照我上面的描述出现。
有什么办法吗?
这里是jrxml文件:
<?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="adjust_textField" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<parameter name="parameter1" class="java.lang.Integer"/>
<queryString>
<![CDATA[SELECT code, name FROM test_co1 WHERE id = $P{parameter1}]]>
</queryString>
<field name="code" class="java.lang.String"/>
<field name="name" class="java.lang.String"/>
<detail>
<band height="125" splitType="Stretch">
<textField isStretchWithOverflow="true">
<reportElement positionType="Float" x="41" y="66" width="270" height="20"/>
<textElement verticalAlignment="Bottom">
<font fontName="Gill Sans MT" size="12" isBold="true"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{code} + " — " + $F{name}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
从下表中读取数据:
CREATE TABLE public.test_co1 (
id INTEGER,
code TEXT,
name TEXT
) ;
/* Data for the 'public.test_co1' table (Records 1 - 54) */
INSERT INTO public.test_co1 ("id", "code", "name")
VALUES
(1, E'J', E'WELDING & CUTTING'),
(2, E'L', E'CONFINED SPACES'),
(6, E'N', E'COMPRESSED GAS/FUEL CYLINDERS'),
(15, E'W18', E'java code to iReportWEAPON SAFETY FOR PROP. MASTERS'),
(45, E'GD$', E'java code to iReportGENERAL SAFETY TRAINING/INJURY & ILLNESS PREVENTION PROGRAM'),
(49, E'GD$', E'java code to iReportENVIRONMENTAL SAFETY');
当你输入45作为参数值时,它显示为
GD$ — java code to iReportGENERAL SAFETY
TRAINING/INJURY & ILLNESS PREVENTION
PROGRAM
虽然我需要它:
GD$ — java code to iReportGENERAL SAFETY
TRAINING/INJURY & ILLNESS PREVENTION
PROGRAM
【问题讨论】:
-
此链接以某种方式描述了我的问题,但我在中间有静态文本,所以答案对我不起作用:stackoverflow.com/questions/8979134/…
-
必须使用单个字段吗?相反,三列会简化解决方案。
-
谢谢回复,问题是如果我用三列还是有调整一行第一个字段的问题
标签: jasper-reports