Josh
Josh

Reputation: 828

Java Default Highlighter

Im using the DefaultHightlighter.DefaultHightlighterPainter to highlight text within a java text pane. I want to remove all highlights (there could be more than one string highlighted) and want it to return the locations of the strings where the highlight has been removed, so obviously I cant use pseudoCodeTextPane.getHighlighter().removeHighlight(highlight);

Can anyone help? Thanks

Upvotes: 2

Views: 1119

Answers (2)

Andreas Baus
Andreas Baus

Reputation: 2626

How about something like

 Highlighter.Highlight[] highlights = pseudoCodeTextPane.getHighlighter().getHighlights();
 int[] startOffsets = new int[highlights.length];
 int[] endOffsets = new int[highlights.length];
 for (int i = 0; i < highlights.length; ++i) {
     startOffsets[i] = highlights[i].getStartOffset();
     endOffsets[i] = highlights[i].getEndOffset();
 }
 pseudoCodeTextPane.getHighlighter().removeAllHighlights();
 // now do whatever processing you want to do with the highlight locations

Upvotes: 3

Hauke Ingmar Schmidt
Hauke Ingmar Schmidt

Reputation: 11607

If you remove all highlights (I suppose with removeAllHighlights) you can getHighlights before that and use the information you receive there.

Upvotes: 1

Related Questions