自分で質問に答えなければならないようです...もう一度。
私はJRViewerクラスをオーバーロードし(興味深いパネルにアクセスできなかったため、実際にはJRViewerのコードをコピーしました)、次のことを行うためにいくつかの強調表示メソッドを追加しました。
テンプレートベースのJasperPrintデータは、名前が示すように、テンプレートを使用します。つまり、テキストオブジェクトには独自のスタイルがなく、テンプレートのスタイルを使用します。
これが、setForecolorが何もしなかった理由です。JRTemplatePrintElementの実装はまったく空です。
ただし、テキストテンプレートにハイライトを設定すると、テンプレートインスタンスを共有するため、ハイライトされたテキストの列全体が表示されます。
代わりに、ハイライトされたオリジナルのコピーとして新しいテンプレートを作成し、ハイライトされた印刷要素でそれを使用します。ところで、これらのジャスパー要素は実際にclone()メソッドを使用できます。
ハックのように感じますが、私にはもっと良い方法がありません。
更新:
ただし、これにはファイルベースの(仮想化された)レポートには厄介な副作用があります。これらは、ページを歩きながら要素に加えた変更を保存しているようです。ただし、その間にビューアによって、参照した要素が仮想化機能によって破棄された場合(たとえば、ページをめくるなど)、それ以上の変更は保存されません...
そのため、私は再考しました。今は、JasperのPageRendererによってペイントされたGraphicsオブジェクトの上にハイライトを描画しています。
はるかにシンプルでクリーン。背景を強調表示するだけでは、このようには機能しません。