|
カテゴリ:コンピュータ
昨日、動的に色を変えるような場合、keyが使えると書きましたが、少し、違っていました。
JasperReportsでは、デザインとデータが別々に存在し、それをまとめて、一つの表を作成する手順になります。 keyを使って変更できるのは、デザインの部分です。 つまり、データを分析して、色を変えるようなことには使えませんでした。 ただし、データを先に分析しておいて、その後、デザインを変更し、それをまとめるという手順であれば、ある程度は可能です。 例えば、データの中に異常値があるので、表とは別に、注意項目として注意書きの欄を表示するようなことはできそうです。 データの中で、異常値の色を変更するのであれば、styled Textが使えます。 これは、テキスト内部に、 "<style forecolor="red">3.5667</style>" のように記述すると、文字が赤くなります。 フォントのサイズを変えたり、アンダーラインを引くなどであれば、これで、目的は達成できます。 テキストフィールドに [条件] ? [赤い色での表示] : [通常表示] とすれば良いのです。 もっと複雑にするなら、Javaでプログラムを作成しておき、例えば StyleBean.selectColor($F{value}) というような感じで、できます。 StyleBean.selectColorは、作成したクラスで、$F{value}の値を元に、装飾したテキストデータを返します。 class StyleBean{ public static String selectColor(String str){ String data; if(..省略..){ data = "<style forecolor=\"red\">" + str + "</style>"; }else if(..省略..){ data = "<style forecolor=\"blue\">" + str + "</style>"; }else{ data = str; } return data; } } この方法の限界は、表のセルの背景色を変更するようなことはできないことです。 テキストの背景色は変更できますが、セルの背景色は変更できないのです。 これを実現するには、昨日、書いたように、フィールドを重ねて、条件分岐で、表示するフィールドを決めることしか、今のところ、わかりません。 これで、目的は達成できますが、処理時間がかかりすぎているのが問題なのです。 htmlなら、上位エレメントを探して、style属性を変更するということができますが、iReportでは、できるのでしょうか。 原理的に考えても、マニュアルをみても、無理な気がします。 別のアプローチが必要ではないかと思っています。 お気に入りの記事を「いいね!」で応援しよう
Last updated
2010.03.02 20:36:49
コメント(0) | コメントを書く
[コンピュータ] カテゴリの最新記事
|