Ich habe einen Explorer in meiner RCP-Anwendung, zu der ich eine innere Zusammensetzung mit einem RowLayout hinzugefügt, um verschiedene Kategorie Elemente anzuzeigen. Wenn die Breite des Explorers in der Größe geändert wird, möchte ich, dass die Kategorieelemente in neue Zeilen umbrochen werden und die Größe des übergeordneten Verbunds erweitern.Wie kann SWT Layout Größe ändern (wachsen/verkleinern) basierend auf Inhalt
Wenn ich meinen inneren Verbund mit Standardeinstellungen initialisiere, passiert nichts, nicht einmal das Umwickeln. Wenn ich es auf den vertikalen Raum setze, benötigt es die Hälfte des Raums, während die andere Hälfte für den Baum übrig bleibt, was hässlich ist und nicht das, was gewünscht wird. Wenn ich Hinweise setze, wickle ich zwar um, aber die Größe seines Verbunds ändert sich nie und versteckt somit die nächsten Zeilen. Ich habe versucht, einen Größenanpassungs-Event-Listener hinzuzufügen und die Größe meines inneren Composits zu ändern. Das erlaubt mir, die Größe zu ändern und alle Zeilen anzuzeigen, aber es deckt dann einen Teil des Baums ab und versteckt ihn. Ich habe versucht, einen setLocation und setSize für den Baum selbst zu bewegen/Größe entsprechend zu ändern, aber ohne Erfolg, es ändert sich nicht.
Wie kann dies gemacht werden, um zu arbeiten. Was vermisse ich. Gibt es nicht eine einfache Möglichkeit, nach einem Layout zu fragen, das die erforderliche Mindesthöhe verwendet und nicht mehr, sondern bei Bedarf anpassen kann?
Danke für Ihre Hilfe.
Hier ist der Code:
innerComposite = new Composite(parent, SWT.NONE);
innerComposite.addListener(SWT.Resize, listenerComp);
GridDataFactory.fillDefaults().hint(10, 30).applyTo(innerComposite);
GridLayoutFactory.fillDefaults().applyTo(innerComposite);
Listener listenerComp = new Listener() {
public void handleEvent(Event event) {
Widget widget = event.widget;
Composite comp = (Composite)widget;
Composite parent = comp.getParent();
Point parentSize = parent.getSize();
Point size = comp.computeSize(parentSize.x, SWT.DEFAULT);
comp.setSize(size);
}
}
Und hier ist ein Bild:
Und nach Größe ändern (zu bemerken, dass die erste Zeile des Baumes bedeckt ist):
Es würde helfen, wenn Sie einen [MCVE] posten könnte (http://stackoverflow.com/help/ mcve) das zeigt das Problem – Baz