SWT: Vermeidung von Neukonstruktion eines Composite's

frochi42

Grünschnabel
Hallo zusammen!

Ich möchte ein Programm schreiben, das eine SashForm benutzt, um links einen Tree darzustellen, und rechts eine komplizierte Struktur von Widgets, die abhängig vom auswählten TreeItem der linken Seite jeweils verschieden ist.

Bis jetzt habe ich herausbekommen, dass ich beim Selektieren im Tree das aktuell dargestellte Composite (rechte Seite) erst löschen muss (mit dispose), um dann ein total neues für das new selektierte TreeItem zu erzeugen.

Das hat natürlich den Nachteil, dass ich beim Hin- und Herselektieren im Tree immer wieder alles neu konstruieren muss, was evtl. lange dauern kann. Das würde ich gerne vermeiden.

Kennt jemand eine Methode, wie ich das Composite der rechten Seite behalten kann, um es später wieder zu re-usen?

Vielen Dank!
 
Wenn du dir die verschiedenen Varianten der Widgets variable in das Rechte Composite legstkannst du mit:

Code:
composite.layout()

das composite und alle widgets die anhängig davon sind neu darstellen lassen.
 
Merke dir einfach zu jedem TreeItem das anzuzeigende Composite (z.B. mit setData auf dem Item) und benutze auf der Rechten Seite ein Basis-Composite (welches auch als Parent für die anderen Composites dient) o.ä. StackLayout. Bei dem StackLayout kannst du dann bei Selektierung eines neuen TreeItems dir das Composite holen und dieses als topControl am Layout setzen. Dann einmal layout auf dem rechten Basis-Composite aufrufen und dann sollte es das gewesen sein.
 
Zurück