Folgendes Verhalten möchte ich erreichen (das ist natürlich nur ein Beispielfall, stellt aber mein Problem relativ gut dar):
Zur Verdeutlichung mal ein Beispiel-Code dazu:
Wie man vielleicht sieht, versuche ich meine eigenen Screens zu erstellen (um genau zu sein, habe ich eine abstrakte Basis-Klasse erstellt, die bestimmte immer wiederkehrende Dinge in jedem der Screens meiner Applikation mitbringt). So kann aber natürlich kein modulares Konzept funktionieren. Durch die while-Schleife verliere ich jegliche Möglichkeit, sinnvoll mit meiner GUI zu "reden".
Mir ist klar, dass mir hier scheinbar etwas grundsätzliches nicht klar ist, bezüglich des Threading-Verhaltens. Ich habe das Stichwort syncExec durchaus schon gelesen. Allerdings ist mir gerade trotzdem schlicht nicht klar, wie ich meine Views (die in unterschiedlichster Weise voneinander abhängen sollen) aus einer main-Methode heraus koordinieren soll.
- Eine main-Methode wird aufgerufen
- Diese Methode zeigt eine Shell an
- Ich will einen Button auf dieser Shell unsichtbar machen
Zur Verdeutlichung mal ein Beispiel-Code dazu:
Java:
public class MyScreen {
private final Shell myShell;
private final Button myButton;
public MyScreen(Shell parentShell) {
if (parentShell == null) {
Display display = new Display();
this.myShell = new Shell(display);
} else
this.myShell = new Shell(parentShell);
this.myButton = new Button(myShell, SWT.NONE);
this.myShell.setLayout(new FillLayout());
myShell.open();
while (!myShell.isDisposed())
if (!myShell.getDisplay().readAndDispatch())
myShell.getDisplay().sleep();
}
public Button getMyButton() {
return this.myButton;
}
public static void main(String... args) {
// Screen erstellen
MyScreen Starter = new MyScreen(null);
// Foo hat sich geändert, jetzt soll der Button nicht mehr sichtbar sein
starter.getMyButton().setVisible(false);
}
}
Wie man vielleicht sieht, versuche ich meine eigenen Screens zu erstellen (um genau zu sein, habe ich eine abstrakte Basis-Klasse erstellt, die bestimmte immer wiederkehrende Dinge in jedem der Screens meiner Applikation mitbringt). So kann aber natürlich kein modulares Konzept funktionieren. Durch die while-Schleife verliere ich jegliche Möglichkeit, sinnvoll mit meiner GUI zu "reden".
Mir ist klar, dass mir hier scheinbar etwas grundsätzliches nicht klar ist, bezüglich des Threading-Verhaltens. Ich habe das Stichwort syncExec durchaus schon gelesen. Allerdings ist mir gerade trotzdem schlicht nicht klar, wie ich meine Views (die in unterschiedlichster Weise voneinander abhängen sollen) aus einer main-Methode heraus koordinieren soll.