Как использовать positionType, чтобы подтянуть компонент вверх, когда вышеуказанный компонент не отображается в яшме? - PullRequest
0 голосов
/ 27 августа 2018

positionType="Float" на компонент тянет себя вниз, если вышеуказанный компонент растягивается.Но не двигается вверх, если вышеуказанный компонент сжимается / не отображается.

Ниже используется используемая версия:

<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="500" splitType="Prevent">
            <staticText>
                <reportElement positionType="Float" x="0" y="19" width="381" height="41" isRemoveLineWhenBlank="true" uuid="9547d877-993c-4bb4-becc-cf70a0cc1bc2">
                    <printWhenExpression><![CDATA[false]]></printWhenExpression>
                </reportElement>
                <text><![CDATA[Text11111111111111111111]]></text>
            </staticText>
            <staticText>
                <reportElement positionType="Float" x="0" y="150" width="381" height="41" isRemoveLineWhenBlank="true" uuid="9e7dbe2e-2fed-41c8-82ce-c0c6886c8eda">
                    <printWhenExpression><![CDATA[true]]></printWhenExpression>
                </reportElement>
                <text><![CDATA[Text22222222222222222222]]></text>
            </staticText>
        </band>
    </summary>
</jasperReport>

Над кодом отображается только второй статический текстовый компонент, но не первый.Потому что printWhenExpression в первом - false.

Теперь я хочу, чтобы второй компонент отображался вместо первого, но это не так.В результате я получаю место там.

Как я могу удалить это пустое место?

1 Ответ

0 голосов
/ 28 августа 2018

Из документации JasperReports выделение моего

positionType = "Float" - элемент плавает в родительском разделе, если его толкают вниз другие элементы, найденные над ним.Он пытается сохранить расстояние между ним и соседними элементами, расположенными непосредственно над ним.

Второй элемент reportElement не будет перемещен туда, где находится первый reportElement, поскольку он сохранить расстояние между ними.Расстояние, показанное на рисунке ниже:

Empty space

Ваше решение - убрать это место !, если вам нравится reportElement 2, чтобы занять reportElement 1 место

Решение A

Удалите пробел, но сохраните позицию второго элемента reportElement, если присутствует первый.Увеличить высоту элемента отчета 1.

Increase height

Решение B

Удалите пробел, переместив элемент отчета 2 вверх, если это textField (динамический текст) вы можете использовать isStretchWithOverflow="true" в reportElement 1, чтобы сдвинуть reportElement 2, если reportElement 1 переполнен.

Move up

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...