JTextPane in JScrollPane - an's Ende scrollen unmöglich



  • Ich habe eine Textpane in einer Scrollpane. Es werden sukzessive weitere Textzeilen eingefügt, dazu wird allerdings der gesamte Text gelöscht und neu hinzugefügt. Ich möchte das nach dem Einfügen die ScrollPane soweit nach unten gescrollt wird, wie nur möglich ist, damit die letzte (neuste!) Zeile Text lesbar ist. Ich habe Verschiedenstes probiert, z.B.:

    javax.swing.JScrollBar jsb= jScrollPane1.getVerticalScrollBar();
        jsb.getModel().setValue(
            jsb.getModel().getMaximum() - jsb.getModel().getExtent() );
    

    Dies müsste laut Doku gehen, aber es scrollt eine Zeile zu wenig nach unten. Ich habe auch verschiedenste Offsets probiert, also noch + 1, -1, +Zeilenhöhe usw. Direkt die Funktionen der ScrollBar nehmen, bringt genau das selbe (falsche) Ergebnis.

    Ich habe mir erstmal dadurch geholfen, das stets eine weitere (leere) Zeile angefügt wird. Aber das Problem sollte ja auch auf normalem Weg lösbar sein!

    Bye, TGGC



  • Du solltest nicht die Scrollbar verschieben sondern den Textcursor an das Ende ... nur so kriegst du das hin.



  • Werde diese Idee mal verfolgen. Ist nur komisch, denn man kann nichts (von Hand) eingeben. Von daher hätte ich nicht gedacht, das es da überhaupt einen Textcursor gibt.



  • Hallo,

    versuchs mal so:

    JTextPane textPane=new JTextPane();

    //...

    textPane.setCaretPosition(textPane.getDocument().getLength());

    MfG



  • Nicht nur das es so funktioniert, das passt auch viel besser in meine Programmstruktur. Danke nochmal!

    Bye, TGGC



  • Einfach:

    TextAnzeige.setCaretPosition(TextAnzeige.getDocument().getLength());
    

Anmelden zum Antworten