Похоже, я должен сам ответить на свои вопросы ... снова.
Я перегружал класс JRViewer (фактически скопировал код JRViewer, потому что ни одна из интересных панелей не была доступна) и добавил несколько методов подсветки для выполнения следующих действий:
На основе шаблонов данные JasperPrint используют - как следует из названия - шаблоны. Это означает, что у текстовых объектов нет собственного стиля, они используют стиль своего шаблона.
Именно поэтому setForecolor ничего не делал - реализация JRTemplatePrintElement просто пуста.
Но если бы я установил выделение в текстовом шаблоне, я бы получил полный столбец выделенных текстов, поскольку они разделяют экземпляр шаблона.
Вместо этого я создаю новый шаблон как копию оригинала с подсветкой и использую его в выделенных элементах печати. Кстати, эти элементы яшмы действительно могут использовать метод clone ().
Похоже на хак, но лучшего способа не вижу.
UPDATE:
Однако это имеет неприятный побочный эффект для файловых (виртуализированных) отчетов.
Они, очевидно, сохраняют любые изменения, которые вы вносите в элементы во время просмотра страниц.
Однако если в то же время средство просмотра заставляет виртуализатор отбрасывать элементы, на которые вы ссылаетесь (например, перелистывая страницы), ваши дальнейшие изменения не будут сохранены ...
Так что это заставило меня пересмотреть свое мнение, и теперь я просто рисую свое выделение поверх объекта Graphics, нарисованного PageRenderer Джаспера.
Гораздо проще и чище. Только подсветка фона не будет работать таким образом.