Hier ist ein ausführbarer Code, der zeigt, was mein "Problem" ist.
Ich habe ein JTextArea
in einem JScrollPane
eingepackt. Wenn ich den Text von JTextArea
ändere, scrollt der JScrollPane
automatisch zum Ende des Textes und ich will das nicht.
Hier sind meine Anforderungen:
(Auch wenn mehr Text als horizontal möglich ist, sollte weder die Anwendung noch der Benutzer in der Lage sein, horizontal zu scrollen. Während vertikal nur der Benutzer scrollen kann.)
Ich weiß nicht, wie ich das "reparieren" soll: Soll das mit den Methoden JTextArea
oder JScrollPane
behoben werden?
Beachten Sie, dass AFAICT das nicht ist, das überhaupt ein Duplikat ist: JTextPane verhindert das Scrollen im übergeordneten JScrollPane
Hier ist das lustige Beispiel, alle 200 ms wird neuer Text in JTextArea
eingefügt und Sie können sehen, dass JScrollPane
immer automatisch zum Ende des Textes scrollt.
Wie AUTO-SCROLLING von JTextArea in Java GUI?
Versuchen Sie:
%Vor%Dies sollte verhindern, dass das Caret das Dokument automatisch nach unten scrollen lässt.
Beantworte meine eigene Frage: Ich bin mir nicht ganz sicher, ob dies der beste Weg ist, um mein Problem zu lösen, aber das JTextArea's
caret mit setCaretPosition(0)
scheint gut zu funktionieren:
Sie haben bei der Implementierung der Document-Klassen ein sehr merkwürdiges Verhalten festgestellt. Ich verwende ein DefaultStyledDocument in einem JTextPane innerhalb eines JScrollPane.
Nun, hier ist das seltsame Ding. Wenn ich das Dokument in der EventQueue aktualisiere (wie bei der Planung einer ausführbaren Datei, die später ausgeführt wird), scrollt der Bildlaufbereich automatisch bis zum Ende.
Die Dokumentklassen behaupten jedoch, threadsicher und tatsächlich von einem anderen Thread aktualisierbar zu sein. Wenn ich sicherstelle, dass ich auf einen anderen Thread als die EventQueue aktualisiere, funktioniert alles einwandfrei, aber der Bildlaufbereich scrollt NICHT bis zum Ende.
Ich habe keine Erklärung, warum das so ist, ich habe nicht in der Swing-Quelle gesucht. Ich nutze dieses "Feature" seit 2006 und es war bisher konsequent: -)
Tags und Links java swing jscrollpane jtextarea