Как я могу применить динамический цвет к текстовому полю в JasperReport

#java #jasper-reports

#java #jasper-отчеты

Вопрос:

У меня есть текстовое поле в jasperreport. Теперь мне нужно динамически передавать текстовый цвет этого поля.

Я пытался использовать iReport designer, но пока не смог найти никаких подходящих решений.

Возможно ли этого добиться?

Ответ №1:

Вы можете использовать Style с условиями. Или вы можете использовать разные элементы (например, текстовое поле) с условием видимости — printWhenExpression .

Для получения более подробной информации вы можете ознакомиться с этим обсуждением.

Пример использования Style . Присваивает forecolor свойству «Позиция продукта» textField значение красного, когда стоимость продукта больше 12,0 и меньше или равна 14,0, и присваивает ему значение зеленого, если стоимость больше 14,0:

 <style name="ColoredField">
    <conditionalStyle>
        <conditionExpression><![CDATA[Boolean.valueOf($F{PRODUCT_COST} > 12.0 amp;amp; $F{PRODUCT_COST} <= 14.0)]]></conditionExpression>
        <style forecolor="#FF0000"/>
    </conditionalStyle>
    <conditionalStyle>
        <conditionExpression><![CDATA[Boolean.valueOf($F{PRODUCT_COST} > 14.0)]]></conditionExpression>
        <style forecolor="#00FF99"/>
    </conditionalStyle>
</style>
 ...
<detail>
    <band height="21" splitType="Stretch">
        <textField>
            <reportElement style="ColoredField" x="78" y="1" width="100" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[$F{PRODUCT_NAME}]]></textFieldExpression>
        </textField>
 

Комментарии:

1. @Alex … хороший описательный ответ… Но в моем случае у меня есть разные 6 вариантов цвета, которые могут быть применены к текстовому полю. Есть ли шансы реализовать это?

2. Да, вы можете. Вы должны создать шесть conditionalStyles