SWT Dialogbearbeitung vom Logikbereich aus!

Status
Nicht offen für weitere Antworten.
G

Grübel

Gast
:oops: Huhu,

ich beschäftige mich noch nicht lange mit Java und SWT.. Nun soll ich eine GUI völlig frei von Logik erstellen..
Das ganze Handle über die "gedrückten" Buttons, dem Textinhalt usw. soll alles in der Logik passieren..
In der GUI soll nur der Aufbau der GUI stehen.. Kein addSelectionListener oder sonst etwas..

Wie bekomme ich über die Shell Zugriff auf die Steuerung der Dialogelemente (Button, Texte, Labels, etc.) ?? Irgendwie scheint es mir als ginge das nicht.. :###

Vielen Dank schon einmal für die Antworten.. :D
 
G

Guest

Gast
Danke..

Hast du ein kleines Beispiel, einen Ausschnitt wie das genau verwendet wird??? :###
 

Wildcard

Top Contributor
Ähm naja, das funktioniert so ähnlich wie SwingUtilities.invokeLater.
Wenn du aus einem anderem Thread heraus etwas an der GUI machen willst, ruft du ein asynchExec auf.
Google kann dir da wahrscheinlich besser helfen als ich.
 

byte

Top Contributor
Du kannst in SWT nur von dem Thread Widgets verändern, in dem das Widget auch erzeugt wurde. Deshalb musst Du von anderen Threads die Anfragen an den Hauptthread delegieren, denn sonst gibts (im Gegensatz zu Swing) eine Exception.

Im Klartext bedeutet das, dass Du am besten alle Aufrufe, die die GUI aktualisieren, an die o.g. Methode übergibst, damit Du auch von anderen Threads der GUI mitteilen kannst, dass sie sich aktualisieren soll.

Der Controller horcht also auf dem Modell nach Veränderungen und aktualisiert dann die GUI über die asyncExec bzw. syncExec():

Code:
	public void update(final Observable o, final Object arg) {
		display.syncExec(new Runnable() {
			public void run() {
				//gui.refresh
			}
		});
	}
 
A

Aimee

Gast
Huhu,

mein Problem hat sich insofern erübrigt das ich jetzt die ganzen Events in der GUI abhandeln darf.. Ich liefere jetzt sozusagen die Ergebnisse an die Logik zurück und das Dialoghandling darf in der GUI passieren.. *freu* Ich war ja ganz unglücklich damit die Logik der Dialoge ebenfalls in der Logik abhändeln zu müssen..

Danke euch beide..

:D
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben