Jasper reports 动态更改元素的宽度

Jasper reports 动态更改元素的宽度,jasper-reports,Jasper Reports,我需要在JasperReports中创建目录。 我已经做到了这一点,但不能做任何事与线在TOC 当前它们具有静态宽度: Chapter 1 ........ 2 Long Chapter Name ........ 3 End ........ 4 我想把虚线延伸到章节名称的宽度。就像这里: Chapter 1 ................. 2 Long Chapter Name ......... 3 End .............

我需要在JasperReports中创建目录。 我已经做到了这一点,但不能做任何事与线在TOC

当前它们具有静态宽度:

Chapter 1          ........ 2
Long Chapter Name  ........ 3
End                ........ 4
我想把虚线延伸到章节名称的宽度。就像这里:

Chapter 1 ................. 2
Long Chapter Name ......... 3
End ....................... 4
我该怎么做?JR中是否有一些“填充”功能,或者我是否应该为此任务创建scriptlet?谢谢


另外,我使用的是jasper reports 5.0.1,这不是一个很好的方法,但我会在你的文本框中画很多点,并用一个框架隐藏结尾,以允许写页码

<?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="table of content" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="df5894b6-0e62-4082-bdb8-3f0a1b26a2f4">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <queryString>
        <![CDATA[SELECT
     1 AS page,
     'test' AS title
FROM
     "account" account
Union
SELECT
     4 AS page,
     'chapter 2' AS title
FROM
     "account" account
Union
SELECT
     20 AS page,
     'chapter 3: hello' AS title
FROM
     "account" account]]>
    </queryString>
    <field name="page" class="java.lang.Integer"/>
    <field name="title" class="java.lang.String"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="20" splitType="Stretch">
            <staticText>
                <reportElement uuid="2e81fd32-3b8d-4b98-b96d-6409afb8d16f" x="0" y="0" width="555" height="20"/>
                <textElement>
                    <font isBold="true" isStrikeThrough="false"/>
                </textElement>
                <text><![CDATA[Table of content]]></text>
            </staticText>
        </band>
    </title>
    <columnHeader>
        <band splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="20" splitType="Stretch">
            <textField>
                <reportElement uuid="c8707508-946a-48ae-ae75-61810003e1db" x="0" y="0" width="555" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{title}+"  .............................................................................................................................."]]></textFieldExpression>
            </textField>
            <frame>
                <reportElement uuid="4040d203-6b49-4da2-8bcf-f3d6d48c7fd7" mode="Opaque" x="341" y="0" width="214" height="20"/>
            </frame>
            <textField>
                <reportElement uuid="472f8f95-fdea-4cd9-b3a5-a1b9b66a8c44" mode="Opaque" x="321" y="0" width="20" height="20"/>
                <textElement textAlignment="Right"/>
                <textFieldExpression><![CDATA[$F{page}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

这不是一个很好的方法,但我会在文本框中画很多点,并使用一个框架隐藏结尾,以允许写入页码

<?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="table of content" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="df5894b6-0e62-4082-bdb8-3f0a1b26a2f4">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <queryString>
        <![CDATA[SELECT
     1 AS page,
     'test' AS title
FROM
     "account" account
Union
SELECT
     4 AS page,
     'chapter 2' AS title
FROM
     "account" account
Union
SELECT
     20 AS page,
     'chapter 3: hello' AS title
FROM
     "account" account]]>
    </queryString>
    <field name="page" class="java.lang.Integer"/>
    <field name="title" class="java.lang.String"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="20" splitType="Stretch">
            <staticText>
                <reportElement uuid="2e81fd32-3b8d-4b98-b96d-6409afb8d16f" x="0" y="0" width="555" height="20"/>
                <textElement>
                    <font isBold="true" isStrikeThrough="false"/>
                </textElement>
                <text><![CDATA[Table of content]]></text>
            </staticText>
        </band>
    </title>
    <columnHeader>
        <band splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="20" splitType="Stretch">
            <textField>
                <reportElement uuid="c8707508-946a-48ae-ae75-61810003e1db" x="0" y="0" width="555" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{title}+"  .............................................................................................................................."]]></textFieldExpression>
            </textField>
            <frame>
                <reportElement uuid="4040d203-6b49-4da2-8bcf-f3d6d48c7fd7" mode="Opaque" x="341" y="0" width="214" height="20"/>
            </frame>
            <textField>
                <reportElement uuid="472f8f95-fdea-4cd9-b3a5-a1b9b66a8c44" mode="Opaque" x="321" y="0" width="20" height="20"/>
                <textElement textAlignment="Right"/>
                <textFieldExpression><![CDATA[$F{page}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>


很棒的黑客。我一定会用的。但是我担心我不能为段落定制行。当它裁剪圆点的时候,看起来不太好。很棒的技巧。我一定会用的。但是我担心我不能为段落定制行。当它裁剪圆点的时候,看起来不太好。