Sieht so aus, als müsste ich meine Fragen selbst beantworten ... schon wieder.
ich die JRViewer Klasse überlastet, und fügte einige hervorheben Methoden (eigentlich den Code JRViewer, weil keines der interessanten Tafeln waren zugänglich kopiert) folgendes zu tun:
Template basierte JasperPrint Daten verwendet - wie der Name schon sagt - Vorlagen. Das bedeutet, dass die Textobjekte keinen eigenen Stil haben, sondern den Stil ihrer Vorlage verwenden.
Das ist der Grund, warum setForecolor nichts getan hat - die Implementierung von JRTemplatePrintElement ist leer.
Aber wenn ich die Hervorhebung auf der Textvorlage einstellen würde, würde ich mit einer vollen Spalte der hervorgehobenen Texte enden, da sie die Vorlageninstanz teilen.
Stattdessen erstelle ich eine neue Vorlage als Kopie des Originals mit Hervorhebung und verwende diese in den hervorgehobenen Druckelementen. Übrigens könnten diese Jaspis-Elemente wirklich eine clone() -Methode verwenden.
Fühlt sich an wie ein Hack, aber ich sehe keinen besseren Weg.
UPDATE:
Allerdings hat dies einen unangenehmen Nebeneffekt für dateibasierte (virtualisierte) Berichte. Diese speichern anscheinend alle Änderungen, die Sie an den Elementen vornehmen, während Sie die Seiten durchlaufen. Wenn der Viewer jedoch in der Zwischenzeit dazu führt, dass der Virtualisierer die referenzierten Elemente verwirft (z. B. durch Blättern), werden Ihre weiteren Änderungen nicht gespeichert ...
Das hat mich dazu gebracht, es zu überdenken und jetzt bin ich zeichne einfach meine Hervorhebung über das von Jaspers PageRenderer gemalte Graphics-Objekt.
Viel einfacher und sauberer. Nur die Hervorhebung des Hintergrunds funktioniert auf diese Weise nicht.