Zeile in JEditorPane hinzufügen



  • Ich möchte eine Zeile an den Inhalt (text/rtf) anhängen. Der Text soll in einer Farbe dargestellt werden z.B. Rot.
    Wie mach ich das?
    Mit

    TextAnzeige.append ("Super!");
    

    geht's ja net...



  • Die Farbe mal in rtf-Manier codiert?.

    Bye, TGGC (Denken, und gut ist.)



  • Hallo,

    eine Zeile anhängen kannst du folgendermaßen:

    textAnzeige.getDocument().insertString( textAnzeige.getDocument().getLength(), "Super!\n", null );

    MfG



  • Noch mit Farbe:

    import java.awt.*;
    import javax.swing.*;
    import javax.swing.text.*;
    
    public class Test
    {
        public static void main(String[] args)
        {
            JFrame frame = new JFrame();
            frame.setSize(200,200);
    
            JEditorPane pane = new JEditorPane();
            pane.setContentType("text/rtf"); 
            pane.setEditable(false);
    
            frame.getContentPane().add(pane);
    
            SimpleAttributeSet farbe = new SimpleAttributeSet();  
    
            try
            {
                StyleConstants.setForeground(farbe, Color.red); 
                pane.getDocument().insertString(pane.getDocument().getLength(),"Zeile 1 in rot\n", farbe); 
    
                StyleConstants.setForeground(farbe, Color.green); 
                pane.getDocument().insertString(pane.getDocument().getLength(),"Zeile 2 in grün\n", farbe);
    
             }catch( BadLocationException ble ){ ble.printStackTrace(); }
    
             frame.setVisible(true);
         }
    }
    

    MfG



  • Danke für die schnellen Lösungsvorschläge, mit dem letzteren ist wirklich was anzufangen!
    Es soll die letzte eingefügte Zeile angezeigt werden. Dies klappt genau solange alles in das "Fenster" reinpasst. Für das Scrollen habe ich (wie wohl üblich) das JEditorPane in ein JScrollPane eingebettet.
    Eigentlich müsste man "nur" noch bis ganz nach unten scrollen - nur alles was ich gefunden habe arbeitet nicht. Hier meine Fehlschläge:

    TextAnzeige.setCaretPosition(TextAnzeige.getText().length());
    

    oder:

    TextAnzeige.scrollRectToVisible( new Rectangle(0,TextAnzeige.getHeight(),1,1));
    

    Weiß jemand was anderes?



  • pane.setCaretPosition(pane.getDocument().getLength());

    müsste funktionieren.

    MfG



  • Das funktioniert theoretisch, hat bei mir (1.4.0 auf Win) aber immer mal rumgesponnen. IMHO sind die Controls diesbezüglich leicht verbuggt.

    Bye, TGGC (Dem beste BdT)



  • Ich hatte mal ein ähnliches Problem mit der Farbe - habs aber verworfen. Weis einer wie man die Schriftart nun ändert, also Fett oder Kursiv.
    Müssre ja auch mit

    SimpleAttributeSet farbe = new SimpleAttributeSet();  
    StyleConstants.setForeground(farbe, Color.red);
    

    gehen, nur wie 😕



  • so funktionierts bei mir:

    SimpleAttributeSet set = new SimpleAttributeSet();
    StyleConstants.setFontSize(set, 20);  
    StyleConstants.setBold(set, true); 
    StyleConstants.setItalic(set, true); 
    StyleConstants.setForeground(set, Color.red); 
    pane.getDocument().insertString(pane.getDocument().getLength(),"fett, rot und kursiv\n", set);
    

    MfG


Anmelden zum Antworten