내 질문에 직접 답변해야하는 것처럼 보입니다 ... 다시.
나는 (흥미로운 패널 중 누구도 접근 할 수 없었다 때문에 실제로 JRViewer의 코드를 복사)를 JRViewer 클래스를 오버로드하고 다음과 같이 몇 가지 강조 방법을 추가 :
템플릿 기반 JasperPrint 데이터를 사용 - 이름이 암시처럼 - 템플릿. 텍스트 객체가 자신 만의 스타일을 가지고 있지 않다는 것을 의미하며, 템플릿의 스타일을 사용합니다.
그 이유는 setForecolor가 아무 것도하지 않는 이유입니다. JRTemplatePrintElement 구현은 단순합니다.
하지만 텍스트 템플릿에 강조 표시를 설정하면 템플릿 인스턴스를 공유하므로 강조 표시된 텍스트의 전체 열로 끝납니다.
대신 새 템플릿을 강조 표시된 원본의 복사본으로 만들어 강조 표시된 인쇄 요소에서 사용하십시오. Btw, 그 벽옥 요소 정말 복제() 메서드를 사용할 수 있습니다.
해킹과 같은 느낌이지만 더 좋은 방법은 없습니다.
업데이트 :
그러나 이것은 파일 기반 (가상화 된) 보고서에 대해 부작용이 있습니다. 페이지를 이동하는 동안 요소에 대한 변경 사항을 저장합니다. 그러나 그 동안 뷰어가 참조하는 요소를 버추얼 라이저에서 버리면 (예 : 페이지를 뒤집음으로써) 추가 변경 사항이 저장되지 않습니다.
그래서 제가 다시 생각하게되었습니다. Jasper의 PageRenderer에 의해 그려진 Graphics 객체 위에 내 강조 표시를 그립니다.
훨씬 간단하고 깨끗합니다. 배경 만 강조 표시하면이 방법으로 작동하지 않습니다.