Syntax Highlighter

schmidi000

Mitglied
Eigener Syntax Highlighter - Problem
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:

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(textPaneText);
                            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.

Ich weiß echt nicht an was das liegt.

mfg schmidi000
 
F

freak_007

Gast
Bevor du alles gehighlightest musst du alles wieder in die Standardschriftfarbe verwandeln und dann kannst du alles wieder mit blau highlighten.
 
Zuletzt bearbeitet von einem Moderator:

schmidi000

Mitglied
Wenn ich das mit dem schwarz färben mache, dann färbt es die Syntax andauernd abwechselnd schwarz und blau. Hab schon die Patterns abgeändert und verschiedenste Patterns probiert, aber ich bekomme das irgendwie nicht auf die Reihe.
 

Ähnliche Java Themen

Neue Themen


Oben