1

ラベルを表示する必要がある折れ線グラフを含む JasperReport がありますが、データ ポイントごとに条件付きで表示する必要があります。実際に値を表示するためのカスタマイザ クラスを作成しましたが、値フィールドとは別のフィールドを使用して表示するかどうかを決定したいと考えています。

基本的に、私の DataSet には 3 つのフィールドがあります。

Date: (Category Axis)
Value: (Value Axis)
PrintValue: Boolean field

PrintValue=true の場合のみラベルに Value を出力したい

4

1 に答える 1

0

解決策の 1 つは、スクリプトレット クラスで JRDefaultScriptlet によって実装されたメソッドの 1 つをオーバーライドし、任意の方法で「PrintValue」の値を設定することです。$V{PRINTVALUE}次に、チャート データセットでオペランドとして参照できるようにする必要があります。

レポートのデザインに iReport を使用していると仮定します。

  1. iReport でレポートを開き、レポート名をクリックします (レポート インスペクターの一番上のノード)。

  2. Scriplet クラスをパッケージ名とクラスに設定します (例: org.company.scriptlets.MyChartClass)。

  3. レポート変数を iReport で宣言します。この場合、「PRINTVALUE」が変数名になります。

  4. 次のように、beforeDetailEval などのスクリプトレット メソッドをオーバーライドする Java クラスを作成します。

    @Override
    public void beforeDetailEval() throws JRScriptletException {
            super.beforeDetailEval();
            ...
            this.setVariableValue("PRINTVALUE", true);
    }
    

    目盛りごとに条件付きでカテゴリ ラベルを表示したいので、おそらくキーと値のペアのマップを使用する必要があります。キーはカテゴリ ラベル、値は「PRINTVALUE」の true/false になります。上記のサンプルコードではこれを説明していませんが、完全に可能です。レポート変数を Map として宣言するだけHashMap<String, Boolean> hmです。

  5. 新しいスクリプトレット クラスを iReport のクラスパスに追加する必要があります。

これが役立つか、少なくとも開始できることを願っています。

于 2012-09-27T16:07:39.090 に答える