Hey,
ich sitze schon den ganzen Nachmittag an einem Problem mit dem Autoscroll von Textareas.
Prinzipiell möchte ich einen Log in einem Textarea ausgeben, dessen Text automatisiert durch das Programm gefüllt wird.
Ich habe desöfteren bei meiner Recherche gelesen, dass ein Textarea mittels der .appendText()-Methode automatisch in die unterste Zeile scrollen soll.
Das habe ich jetzt getestet. Für einen schnellen Test über einen Button-Click hat das auch funktioniert.
Allerdings läuft mein Programm automatisiert und nicht über einen Button-Click ab. Das heißt, es wird eine test()-Methode aufgerufen, die u.a. ein Textarea übergeben bekommt und während dem Ablauf der test()-Methode wird das Textarea über die appendText()-Methode mit Inhalt gefüllt.
Und hierbei funktioniert der Autoscroll leider nicht mehr.
Meine Vermutung ist, dass das mit den Threads zusammenhängt. Da die test()-Methode im gleichen Thread aufgerufen wird, in der die GUI erzeugt wird, läuft zuerst die test()-Methode ab, bevor die GUI aktualisiert wird.
Man möge mich andernfalls eines Besseren belehren.
Leider fällt mir partout keine Lösung für dieses Problem ein und schon gar keine sinnvolle. Ich habe schon an etwas gedacht, dass ich für die test()-Methode einen weiteren Thread aufrufe. Allerdings kommt mir keine Möglichkeit in den Sinn, diese beiden Threads miteinander zu verbinden.
Wobei mir jetzt gerade beim Schreiben dieses Threads in den Sinn gekommen ist: Wenn mir die test()-Methode bei jeder Änderung eine Nachricht geben würde, dass sie gerne etwas zu dem Textarea hinzufügen würde, könnte der Haupt- (GUI-)Thread diese Änderung dann über die appendText()-Methode vornehmen.
Das Problem ist allerdings, dass die test()-Methode erst vollständig durchläuft, bevor sie Änderungen mitteilt.
Gäbe es da vielleicht eine Möglichkeit über Listener?
Grüße
ich sitze schon den ganzen Nachmittag an einem Problem mit dem Autoscroll von Textareas.
Prinzipiell möchte ich einen Log in einem Textarea ausgeben, dessen Text automatisiert durch das Programm gefüllt wird.
Ich habe desöfteren bei meiner Recherche gelesen, dass ein Textarea mittels der .appendText()-Methode automatisch in die unterste Zeile scrollen soll.
Das habe ich jetzt getestet. Für einen schnellen Test über einen Button-Click hat das auch funktioniert.
Allerdings läuft mein Programm automatisiert und nicht über einen Button-Click ab. Das heißt, es wird eine test()-Methode aufgerufen, die u.a. ein Textarea übergeben bekommt und während dem Ablauf der test()-Methode wird das Textarea über die appendText()-Methode mit Inhalt gefüllt.
Und hierbei funktioniert der Autoscroll leider nicht mehr.
Meine Vermutung ist, dass das mit den Threads zusammenhängt. Da die test()-Methode im gleichen Thread aufgerufen wird, in der die GUI erzeugt wird, läuft zuerst die test()-Methode ab, bevor die GUI aktualisiert wird.
Man möge mich andernfalls eines Besseren belehren.
Leider fällt mir partout keine Lösung für dieses Problem ein und schon gar keine sinnvolle. Ich habe schon an etwas gedacht, dass ich für die test()-Methode einen weiteren Thread aufrufe. Allerdings kommt mir keine Möglichkeit in den Sinn, diese beiden Threads miteinander zu verbinden.
Wobei mir jetzt gerade beim Schreiben dieses Threads in den Sinn gekommen ist: Wenn mir die test()-Methode bei jeder Änderung eine Nachricht geben würde, dass sie gerne etwas zu dem Textarea hinzufügen würde, könnte der Haupt- (GUI-)Thread diese Änderung dann über die appendText()-Methode vornehmen.
Das Problem ist allerdings, dass die test()-Methode erst vollständig durchläuft, bevor sie Änderungen mitteilt.
Gäbe es da vielleicht eine Möglichkeit über Listener?
Grüße