Java Default Highlighter

2020-04-18 05:49发布

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

2条回答
Evening l夕情丶
2楼-- · 2020-04-18 06:26

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
查看更多
家丑人穷心不美
3楼-- · 2020-04-18 06:27

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

查看更多
登录 后发表回答