SetCursor - Probleme !

flashray

Erfahrenes Mitglied
Hallo,

ich möchte in einer Editorapplikation den Cursor bearbeiten.

Konkret heißt das:

mytextarea.setCursor(new Cursor(Cursor.Wait_Cursor));
mytextarea.read(new FileReader("test.txt"),"");
mytextarea.setCursor(new Cursor(Cursor.Default_Cursor));

Es soll also ein langer Text eingelesen werden und bis der Vorgang abgeschlossen ist soll ein Wait_Cursor zu sehen sein. Irgendwie klappt das nicht. Hab es dann vergeblich mit SwingUtilities.Invokelater und ähnlichem versucht.

Hat jemand ne Idee wie ich das doch machen könnte?

Vg Erdal
 
Hi,

Ein anderes ähnliches Problem hatte ich vor einiger Zeit. Als Fortschrittsanzeige hatte ich eine JLabel. Es sollten Daten aus dem Web geladen, verarbeitet und gespeichert werden. Ich habe dann in dieser Methode an verschiedenen Stellen den Text des JLabel verschieden gesetzt. Allerdings konnte ich bis die Methode zu Ende gearbeitet hatte keine Veränderung am JLabel sehen. Nur das letze setText() welches ganz am Schluss der Methode war veränderte dann das JLabel. Ich hab dann statt einem JLabel ein Label benutzt. Siehe da, der Text des awt Labels wurde an den gewünschten Stellen neu gesetzt. Allerdings hat ein awt-Label auch seine Nebeneffekte in einer SwingGUI habe aber damals keine Lösung gefunden gehabt wie ich diese mit dem JLabel machen könnte. Und jetzt dass Problem mit dem Cursor der nicht richtig aktualisiert wird.

Thread, Runnable, Swingutilities.invokelater,invokeandwait habe schon alles ausprobiert?

Jemand ne andere Idee?

Vg Erdal
 
Ich kenne soetwas nur wenn der Rechner richtig zu tun hat.
Dann hat die GUI nicht die Zeit sich neu zu malen.
"Threads" ist da wohl das Zauberwort.
 
Servus,

habs doch noch endlich nach dem 101. Versuch hinbekommen.

Code:
new Thread () {
	public void run () {
		textarea.setCursor(new Cursor(Cursor.WAIT_CURSOR));	
		textarea.setText(h_read(pfad));
		textarea.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));		
	}
}.start();

Schon komisch die Funktionsweise von Thread. Ich habe immer versucht entweder die setCursor() in eigene Threads zu packen, oder nur textarea.setText(...) in einen Thread. Das man sowohl die GUIaktualisierung als auch den Prozess mit Hoher Last in einen Thread stecken muss ...?

Vg Erdal
 
Hallo RealHAZZARD,

hast recht gehabt das Zauberwort war Thread, hab nähmlich zum Schluss einfach nur einen einzigen Thread gebraucht. Das Umgehen mit Zauberworten muss auch gelernt sein, denn die genaue Formel oder die Zusammensetzung machts zum Schluss.

Vg Erdal
 
Zurück