2016-09-02 3 views
-2

レポートのすべての負の数値が赤くなる必要があります。数字の書式設定でこれを行う方法はありますか?そうでない場合、現在のテキストフィールドをチェックするどこかの動的条件を作成することは可能ですか?例えばJasperSoft Studioの動的に赤の負の数値

If this Textfield < 0 then this texfield font is red 

覚えておいて、それは私が条件を変更することなく、すべてのテキストフィールドにドロップ可能性という意味で動的にする必要があります。

条件に特定のフィールドを使用するのではなく、条件付きスタイルを理解しています(これは重複とマークされている質問のように)。条件を任意のテキストフィールドにドラッグして、 0未満です。

ありがとうございます!

+2

[JasperReportsの条件に基づいてテキストフィールドのデータの色(前景色)を変更する](http://stackoverflow.com/questions/8754448/change-text-field-data-color-foreground-color-based-ジャスペレ・オン・コンディション) –

+0

はい、私は条件付きスタイルを理解していますが、その例のように特定のフィールドを使用するのではなく、この条件を多くの異なるテキストフィールドにドラッグすることができる意味でよりダイナミックになりたいと思います。この質問は、もう少し複雑な質問です。 – Matt

答えて

0

これは条件付きスタイルでは実現できません。

<textField> 
    <reportElement x="72" y="16" width="100" height="24" uuid="698866c8-7d26-4bc7-8727-b4a56d239a53"/> 
    <textElement markup="styled"/> 
    <textFieldExpression><![CDATA[NegativeNumberFormatter.format($F{A1}, "#,##0.###")]]></textFieldExpression> 
</textField> 

NegativeNumberFormatterは、(デフォルトのパッケージを使用して)次のようになります:

ソリューションは、そう、出力はスタイルでしょうカスタムフォーマッタテキストを作成し、テキストフィールドは以下のようにmarkup="styled"に設定されていることであろう

import java.text.DecimalFormat; 

public class NegativeNumberFormatter { 

    public static String format(Number n, String pattern) { 
    if (n != null) { 
     if (n.doubleValue() < 0) { 
     DecimalFormat df = new DecimalFormat(); 

     if (pattern != null) { 
      df.applyPattern(pattern); 
     } 

     return "<font color=\"red\">" + df.format(n) + "</font>"; 
     } else { 
     return "" + n; 
     } 
    } 

    return null; 
    } 
} 
関連する問題