schmidi000
Grünschnabel
Hey Leute, ich habe ein Problem.
Ich hab mir einen eigenen Syntax Highlighter geschrieben, welcher nur zum Teil funktioniert.
Ich hab ein JTextPane auf dem ich den Syntax Highlighter anwende.
Das ist der Thread prüft permanent ob ein Substring im JTextPane mit "<" beginnt und mit ">" endet:
Wenn dies der Fall ist wird dieser blau gefärbt.
Hier sind die Initialisierungen und Deklarationen:
Nun zum Problem:
Wenn ich in mein JTextPane nun einen Text eingebe zb. "<html>" dann wird dieser blau gefärbt, dann mach ich einen Zeilenumbruch mit Enter und gib "</html>" ein, dann wird nur "html>" blau gefärbt. Wenn ich den ganzen Text aus dem JTextPane lösche und schreibe "asdjsnhcfnwevkh" also nichts was im Schlüsselwörter Array vorkommt, dann wird trotzdem alles blau gefärbt.
Beispiel:
Wenn ich zb. schreibe:
<html>
Text
</html>
dann wird "<html>" und "</html>" gefärbt und "Text" nicht, soweit so gut... wenn ich jetzt aber Text bis zum Zeilenanfang lösche, dass das Ganze danach so aussieht:
<html>
</html>
und danach schreibe ich in dieser Zeile, in der vorhin "Text" stand wieder etwas, dann wird der Text auch blau gefärbt.
Ich weiß echt nicht an was das liegt.
mfg schmidi000
Ich hab mir einen eigenen Syntax Highlighter geschrieben, welcher nur zum Teil funktioniert.
Ich hab ein JTextPane auf dem ich den Syntax Highlighter anwende.
Das ist der Thread prüft permanent ob ein Substring im JTextPane mit "<" beginnt und mit ">" endet:
Java:
class checkForSyntax extends Thread {
checkForSyntax() {
setDaemon(true);
setName("SyntaxChecker");
}
@Override public void run() {
while(true) {
textPaneText = textPane.getText();
cleanTextPaneText = textPaneText.replaceAll("\r","");
try {
Matcher matcher = Pattern.compile("<.*?>").matcher(cleanTextPaneText);
while(matcher.find()) {
StyleConstants.setForeground(style,Color.BLUE);
doc.setCharacterAttributes(matcher.start(), matcher.end(), textPane.getStyle("Blue"), true);
}
}
catch(Exception e) {
System.err.println("Error while checking syntax!");
e.printStackTrace();
}
}
}
}
Wenn dies der Fall ist wird dieser blau gefärbt.
Hier sind die Initialisierungen und Deklarationen:
Java:
JTextPane textPane = new JTextPane();
public StyledDocument doc = textPane.getStyledDocument();
public Style style = textPane.addStyle("Blue",null);
String textPaneText;
Nun zum Problem:
Wenn ich in mein JTextPane nun einen Text eingebe zb. "<html>" dann wird dieser blau gefärbt, dann mach ich einen Zeilenumbruch mit Enter und gib "</html>" ein, dann wird nur "html>" blau gefärbt. Wenn ich den ganzen Text aus dem JTextPane lösche und schreibe "asdjsnhcfnwevkh" also nichts was im Schlüsselwörter Array vorkommt, dann wird trotzdem alles blau gefärbt.
Beispiel:
Wenn ich zb. schreibe:
<html>
Text
</html>
dann wird "<html>" und "</html>" gefärbt und "Text" nicht, soweit so gut... wenn ich jetzt aber Text bis zum Zeilenanfang lösche, dass das Ganze danach so aussieht:
<html>
</html>
und danach schreibe ich in dieser Zeile, in der vorhin "Text" stand wieder etwas, dann wird der Text auch blau gefärbt.
Ich weiß echt nicht an was das liegt.
mfg schmidi000
Zuletzt bearbeitet: