Hallo,
ich habe eine JEditorPane und eine Liste mit Regex-Begriffen und zugehörigen Farben. Ich durchsuche den Text aus der JEditorPane per Schleife nach jeder einzelnen regex und färbe die jeweiligen Textstellen mit der zugehörigen Farbe ein.
Das Problem dabei: Manchmal funktioniert das ohne Probleme, und manchmal funktioniert es gar nicht. Die Schleife wird scheinbar vollständig durchlaufen. Ich kann mir nicht erklären, warum es manchmal geht und manchmal nicht. Ich kann nicht erkennen, dass ich etwas anders mache. Muss ich abschließend der JRE irgendwie mitteilen, dass sie das Textfenster noch mal neu zeichnen soll? JEditorPane.repaint() bringt jedenfalls nichts.
Hier ein Schnipsel aus meinem Code:
ich habe eine JEditorPane und eine Liste mit Regex-Begriffen und zugehörigen Farben. Ich durchsuche den Text aus der JEditorPane per Schleife nach jeder einzelnen regex und färbe die jeweiligen Textstellen mit der zugehörigen Farbe ein.
Das Problem dabei: Manchmal funktioniert das ohne Probleme, und manchmal funktioniert es gar nicht. Die Schleife wird scheinbar vollständig durchlaufen. Ich kann mir nicht erklären, warum es manchmal geht und manchmal nicht. Ich kann nicht erkennen, dass ich etwas anders mache. Muss ich abschließend der JRE irgendwie mitteilen, dass sie das Textfenster noch mal neu zeichnen soll? JEditorPane.repaint() bringt jedenfalls nichts.
Hier ein Schnipsel aus meinem Code:
Java:
for (int i = 0; i < regexTerms.size(); i++) {
String pattern = regexTerms.get(i).getPattern();
Color color = regexTerms.get(i).getColor();
Pattern p = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(text);
while(m.find()) {
int start = m.start() + 1;
int end = m.end() + 1;
MutableAttributeSet style = new SimpleAttributeSet();
StyleConstants.setForeground(style, color);
doc.setCharacterAttributes(start, end-start, style, false);
}
}