如何为文本字段创建动态颜色?

时间:2016-04-21 11:06:41

标签: jasper-reports jaspersoft-studio

背景:Jaspersoft studio 6.2

如何根据表达式更改文本字段的 forecolor

如何应用表达式以使字体颜色(forecolor)基于该字段中的值?我找不到任何地方为forecolor属性设置表达式。

3 个答案:

答案 0 :(得分:4)

另一种可能性是在文本字段中使用样式属性表达式:

<textField ...>
  <reportElement ...>
      <propertyExpression name="net.sf.jasperreports.style.forecolor">
         <![CDATA["#00FF00"]]>
      </propertyExpression>
  </reportElement>
  ...
</textField>

此设置将覆盖文本字段的当前forecolor属性,并将打印出绿色文本。

Here列出了可用于报表元素的所有动态样式属性。

答案 1 :(得分:3)

您使用 conditionalStyle 来实现此目标

示例

<style name="myStyle" forecolor="#0000FF">
    <conditionalStyle>
        <conditionExpression><![CDATA[$F{myField}<0]]></conditionExpression>
        <style forecolor="#CC0000"/>
    </conditionalStyle>
</style>

然后在您想要使用时将样式设置为textField

<textField>
    <reportElement style="myStyle" x="448" y="5" width="100" height="20" uuid="b75e4497-e952-4051-8640-2f6b498dd152"/>
    <textFieldExpression><![CDATA["Hello world"]]></textFieldExpression>
</textField>

在JasperSoft Studio中,右键单击大纲中的样式以创建“条件样式”并在属性选项卡中设置属性

JasperSoft Studio

答案 2 :(得分:1)

也许有一个选择:

您需要将markup设置为style。 然后在文本字段中使用表达式:

F{value1}=="GREEN"?$F{value1}:"<style backcolor='red'>"+$F{value1}+"</style>"

您还可以添加条件并设置多种颜色:

F{value1}=="GREEN"?"<style backcolor='green'>"+$F{value1}+"</style>":"<style backcolor='red'>"+$F{value1}+"</style>"

也许这对你有用。