Textfarbe fuer bestimmste Bereiche von JTextArea aendern



  • Hi ihr da draussen...

    Ich versuche mir nen kleinen Parser zu schreiben der mir bestimmte Bereiche einer JTextArea einfaerbt....

    Das sieht im Moment so aus das ich ein Textfile Zeichenweis in die Area einlese und immer wenn ein bestimmtes Zeichen kommt soll die ZeichenFarbe geaendert werden bis wieder ein bestimmtes Zeichen auftaucht...

    Nu hab ich aber das problem das man mit .setForeground nur immer den kompletten Text der Area einfaerbt...

    Gibt es ne Moeglichkeit nur bestimmte Bereiche einzufaerben ohne das man sich gleich ne eigene Komponente schreiben muss(hab nurnoch 2 Tage zeit)???

    Waere sehr genial wenn da jemand ne Loesung wueste... ich pack mal meinen Codeschnippsel mit rein....

    Danke im vorraus....

    Tschoeee..... Lord Helmchen

    import java.io.*;
    import java.util.*;
    import java.awt.*;
    
    public class SourceCodeReader 
    {
        private JavaDocGuiFrame frame;
    
        public SourceCodeReader (JavaDocGuiFrame frame)
        {
            this.frame=frame;
        }
    
        public void readCode(String file)
        {
            try
            {
                frame.getSourceCode().setText("");   //getSourceCode gibt Instanz von JTextArea zurueck
                FileReader sCode = new FileReader(file);
                int char_read,char_read2;
    
                while ((char_read=sCode.read())!=-1)
                {
                    if ((char)char_read=='/')
                    {
                        char_read2=sCode.read();
                        if((char)char_read2=='*')
                        {
                            frame.getSourceCode().setForeground(Color.GREEN);
                        }
                        frame.getSourceCode().append(Character.toString((char)char_read));
                        frame.getSourceCode().append(Character.toString((char)char_read2));
                        continue;
                    }   
                    if ((char)char_read=='*')
                    {
                        char_read2=sCode.read();
                        if((char)char_read2=='/')
                        {
                            frame.getSourceCode().setForeground(Color.BLACK);
                        }
                        frame.getSourceCode().append(Character.toString((char)char_read));
                        frame.getSourceCode().append(Character.toString((char)char_read2));
                        continue;
                    }
                    frame.getSourceCode().append(Character.toString((char)char_read));  
                }   
                JavaDocGuiController.hasChange=false;                     
            }
            catch (IOException ex)
            {
                System.out.println(ex.getMessage());
            }
        }
    }
    

    [ Dieser Beitrag wurde am 02.07.2003 um 12:11 Uhr von Lord Helmchen editiert. ]

    [ Dieser Beitrag wurde am 02.07.2003 um 12:14 Uhr von Lord Helmchen editiert. ]



  • Du solltest dafür ein EditorPane nutzen...


Anmelden zum Antworten