ich habe bereits seit längerem das folgende Problem und habe bereits in einem anderem Forum nach einer Lösung gefragt. Nun versuche ich hier mein Glück.
Ich programmiere aktuell ein Chat-System um meine Fähigkeiten zu stärken. Dazu habe ich ein kleines GUI mit ScrollPane. Dieses ScrollPane soll bei jeder neuer Nachricht automatisch nach unten scrollen. Wenn ich aber eine alte Nachricht lesen möchte, soll dieses dies erkennen und bei einer neuen Nachricht nicht nach unten scrollen. Sobald ich wieder nach unten scrolle, soll bei jeder neuen Nachricht wieder nach unten gescrollt werden. Dafür dachte ich an die UpdatePolicy.
Funktionen:
Bei jeder neuen Nachricht wird automatisch nach unten gescrollt [check]
Nach oben scrollen, nach unten scrollen und bei jeder neuen Nachricht wird automatisch nach unten gescrollt [check]
Nach oben scrollen und bei jeder neuen Nachricht soll nicht automatisch nach unten gescrollt werden [check]
Nach oben scrollen, eine neue Nachricht bekommen, nach unten scrollen und wieder eine neue Nachricht bekommen, dabei automatisch nach unten scrollen [ ] (dort tritt beim automatischen nach unten scrollen das Problem auf)
Per Abfragen habe ich das setzen der UpdatePolicy abgefragt, diese scheinen aber zu funktionieren.
Desshalb habe ich ein kleines Programm ohne ScrollListener erstellt, um die grundsätzliche Funktion zu testen. Dieses habe ich mit SourceCode angehängt:
Nach dem starten ist es möglich mit der Eingabe von “on” und “off” die UpdatePolicy zu ändern, mit “get” kann der aktuelle Status der UpdatePolicy abgefragt werden. Jede andere Eingabe wird als Text erkannt und ausgegeben, um eine neue Nachricht zu erzeugen. Damit kann man dann das Problem darstellen. Ich erkläre und zeige das Problem auch gerne direkt, falls dies ein wenig unverständlich ist.
Ich erhalte weder hier, noch in anderen Foren eine Antwort auf dieses Thema.
Ich hoffe inzwischen aber auch in keinem Forum mehr auf eine Antwort.
Auch hier haben gerade mal 2 Leute meine angehängten Dateien angeschaut.
Ich frage mich wirklich, ob ich der erste bin, der UpdatePolicy nutzen möchte. Naja, auch egal.
Ich wünsche allen anderen noch viel Spaß an Java und verabschiede mich auch schon wieder aus diesem Forum.
habe das Programm ausprobiert,
scheint alles zu funktionieren, aber Bedienung nicht ganz leicht,
nur nach oben scrollen deaktiviert das Verhalten des Springens ans Ende nicht (bei mir),
man muss auch irgendwo hinklicken, so dass die CaretPosition nicht mehr die letzte ist, dann bleibt es dort,
um das Mitscrollen wieder zu aktivieren muss man die CaretPosition ganz ans Ende bekommen,
irgendwo hinter der letzten Nachricht klicken
immerhin geht auch ein Befehl wie chatO.setCaretPosition(chatO.getText().length());
vielleicht kannst du das bei ScrollListenern nutzen, programmatisch den Modus wieder einschalten
ein Titel ohne Abgewöhn-Begriff ‚Policy‘, sondern simpel ‚Scroll in JTextArea‘ oder so hätte vielleicht früher mehr angelockt, also z.B. mich