Hallo,
ich möchte gerne in meiner Anwendung eine Startseite mit Buttons verwenden, diese erzeuge ich mittels createContents(), soweit alles klar. Jetzt möchte ich aber, das wenn auf einen der Buttons oder den dazugehörigen Menüeintrag geklickt wird, der Hauptbereich komplett verändert wird und eine (von mehreren verschiedenen) Eingabemasken angezeigt wird. Nur ist mir leider nicht klar, wie ich den Hauptbereich "überschreiben" kann. Alle Beispiele, die ich bisher gefunden habe, gehen immer von einem (quasi) unveränderlichen Hauptbereich aus, aber das muss doch gehen, oder?
Hat jemand einen Tip für mich?
André
Beispiel:
Bei diesem Beispiel (die Action actionChange wird über das Menü aufgerufen) versuche ich, das Composite neu zu initialisieren, das neue Textfeld wird aber nicht angezeigt. Ich bin mir sicher, das das geht, nur wie?
ich möchte gerne in meiner Anwendung eine Startseite mit Buttons verwenden, diese erzeuge ich mittels createContents(), soweit alles klar. Jetzt möchte ich aber, das wenn auf einen der Buttons oder den dazugehörigen Menüeintrag geklickt wird, der Hauptbereich komplett verändert wird und eine (von mehreren verschiedenen) Eingabemasken angezeigt wird. Nur ist mir leider nicht klar, wie ich den Hauptbereich "überschreiben" kann. Alle Beispiele, die ich bisher gefunden habe, gehen immer von einem (quasi) unveränderlichen Hauptbereich aus, aber das muss doch gehen, oder?
Hat jemand einen Tip für mich?
André
Beispiel:
Code:
protected Control createContents(Composite parent) {
getShell().setText("Mein Fenster");
setStatus("Ready");
composite = new Composite(parent, SWT.BORDER);
composite.setLayout(new GridLayout(1,false));
Text text = new Text(composite, SWT.BORDER);
text.setText("Test");
return composite;
}
Action actionChange = new Action("Change", ImageDescriptor.createFromFile(null, "icons/folder.gif")) {
public void run() {
Control[] controls = composite.getChildren();
for (int i=0; i<controls.length; i++) {
controls[i].dispose();
}
//composite.dispose();
composite = new Composite(getShell(), SWT.BORDER);
composite.setLayout(new GridLayout(1,false));
Text text = new Text(composite, SWT.BORDER);
text.setText("Tested");
composite.redraw();
composite.changed(new Control[] {text});
setStatus("geändert");
}
};
Bei diesem Beispiel (die Action actionChange wird über das Menü aufgerufen) versuche ich, das Composite neu zu initialisieren, das neue Textfeld wird aber nicht angezeigt. Ich bin mir sicher, das das geht, nur wie?