【问题标题】:How to create dynamic color for text field?如何为文本字段创建动态颜色?
【发布时间】:2016-04-21 11:06:40
【问题描述】:

背景:Jaspersoft studio 6.2

如何根据表达式更改文本字段的前景色

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

【问题讨论】:

  • 我认为 JasperSoftStudio 不可能做到这一点。它不干净,但您可以放置​​两个文本字段(例如红色和绿色)并根据表达式显示一个。
  • 为什么没有内置?我知道这是开源和免费的,但这是一个非常基本的功能,我使用的所有报告工具都有这个功能......
  • 我改变了看法,看看我的答案或 Petter 的答案(比我的更干净)

标签: jasper-reports jaspersoft-studio


【解决方案1】:

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

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

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

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

【讨论】:

  • 这不是动态的。所以原始问题没有得到正确回答。也许有办法拥有条件 propertyExpression 或类似的东西
  • @shertage: 你应该提到可以使用
【解决方案2】:

也许有一个选项:

您需要将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>"

也许这对你有用。

【讨论】:

  • 你的实际工作(第二个是我正在寻找的),虽然你改变了背景而不是字体颜色。我将标记更改为 html,并在文本表达式中输入与您类似的内容(除了它是 some text ),它可以完美运行。
  • 工作就像一个魅力。谢谢
【解决方案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 中,右键单击 outline 中的样式创建“条件样式”并在属性选项卡中设置属性

【讨论】:

  • 代码是什么以及如何使用代码?我们在谈论 Jaspersoft Studio 6.2 吗?别忘了背景是“我是新人”。
  • @thotwielder 代码是jrxml代码(IDE通用),在IDE中点击source就会看到。我已经包含了一个屏幕截图,因此您可以在 IDE 中找到样式的位置。
  • 因此,当您使用 IDE 时,它会生成 jrxml 代码:)。
  • 我明白你现在的意思了,你的会起作用,但第一个更容易恕我直言,比你的更早,所以,但感谢您的解释。
  • @thotwielder my 是标准方式,您可以更改文本的所有属性(背景、前景、字体、粗体 ecc),在我之前??,你是什么意思??,但没问题,你可以选择任何你喜欢的
猜你喜欢
  • 2016-02-28
  • 2014-05-22
  • 1970-01-01
  • 2020-01-10
  • 2012-04-03
  • 2022-11-19
  • 2012-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多