SWT Button in Composite vor anderem Button einfügen

GRudiD

Aktives Mitglied
Hallo,

ich bin mit SWT langsam am verzweifeln. Ich versuche (neben vielen anderen Dingen 🙂 ) seit geraumer Zeit in einem bestehenden Composite Buttons mit einer Gewichtung hinzuzufügen. Bsp: Button1, Button3 und Button 4 sind bereits im Composite erzeugt. Nun möchte ich Button2 nachträglich zwischen Button1 und Button3 hinzufügen. Der Button erscheint aber grundsätzlich hinter Button4. SWT erlaubt es mir nicht im Konstruktor ein Index anzugeben. Auch eine entsprechende Methode beim Button oder im Composite habe ich nicht entdecken können um die Position nachträglich zu verändern. Einzig Composite.getChildren() könnte weiterhelfen, aber die kann man ja nicht editieren.

Kann mir jemand bei dem Problem helfen?

Mit freundlichen Grüßen
Gordon
 
Hallo,

ich bin mit SWT langsam am verzweifeln. Ich versuche (neben vielen anderen Dingen 🙂 ) seit geraumer Zeit in einem bestehenden Composite Buttons mit einer Gewichtung hinzuzufügen. Bsp: Button1, Button3 und Button 4 sind bereits im Composite erzeugt. Nun möchte ich Button2 nachträglich zwischen Button1 und Button3 hinzufügen. Der Button erscheint aber grundsätzlich hinter Button4. SWT erlaubt es mir nicht im Konstruktor ein Index anzugeben. Auch eine entsprechende Methode beim Button oder im Composite habe ich nicht entdecken können um die Position nachträglich zu verändern. Einzig Composite.getChildren() könnte weiterhelfen, aber die kann man ja nicht editieren.

Kann mir jemand bei dem Problem helfen?

Mit freundlichen Grüßen
Gordon

Ich versteh nicht ganz was du machen willst.
Willst du den Button von einer anderen Klasse einfügen oder was hast du vor?
Im nachhinein einfügen ist nicht. Alle runter schmeißen und dann neu machen.

Aber warum machst du den Button nicht einfach drauf und setzt ihn auf disable?
 
Danke für die schnelle Antwort,

der Hintergedanke ist der, dass die Buttons Plugins repräsentieren (was die Buttens im Endeffekt machen sollen sei mal dahingestellt). Diese Plugins können auch zur Laufzeit hinzugefügt werden. Nun soll es so sein, dass ein Plugin wichtiger sein kann als ein anderes. Dem entsprechend müsste auch der dazugehörige Button weiter nach links gesetzt werden. Nur habe ich noch keine Möglichkeit gefunden dies effektiv zu bewerkstelligen.

Im nachhinein kann ich schon noch Buttons im Composite x erzeugen und dann einfach mittels x.layout(true) alles refreshen, nur werden diese immer hinten rangehängt, was ich ja vermeiden will.

Ist es so klarer, worin das Probelm besteht?
 
Im nachhinein kann ich schon noch Buttons im Composite x erzeugen und dann einfach mittels x.layout(true) alles refreshen, nur werden diese immer hinten rangehängt, was ich ja vermeiden will.

Ist es so klarer, worin das Probelm besteht?

Ja sag ich doch alle runterschmeißen disposen ...
Und in der richtigen Reihenfolge neu erstellen

Oder du schaust dir mal RowLayout und StackLayout an, vielleicht gibt es da eine Option.
 
Zuletzt bearbeitet von einem Moderator:
Also bei den Layouts gäbe es anscheinend nur die Möglichkeit beim FormLayout den linken Wert von Button2 in Abhängigkeit vom Button1 zu setzen, der genau davor erscheinen soll. Die restlichen Layouts bringen da leider nichts.

Ich finde es aber auch echt miserabel, dass SWT solch grundlegende Funktionalitäten nicht unterstützt.

Trotzdem danke für die Hilfe.
 
Also bei den Layouts gäbe es anscheinend nur die Möglichkeit beim FormLayout den linken Wert von Button2 in Abhängigkeit vom Button1 zu setzen, der genau davor erscheinen soll. Die restlichen Layouts bringen da leider nichts.

Ich finde es aber auch echt miserabel, dass SWT solch grundlegende Funktionalitäten nicht unterstützt.

Trotzdem danke für die Hilfe.

Schreib mal ins eclipse Forum vielleicht wissen die was.
 
Also ich habe das vorerst gelöst, indem ich deinem Rat gefolgt bin und einfach alle Buttons neu erzeuge. Das mag bei den Buttons ja noch relativ einfach funktionieren. Bei komplexen Composites, in denen man z.B. mit der Maus was zeichnen kann oder viele Textfelder hat müsste man allerdings erst alle Eingaben sichern, alles disposen, alles neu erzeugen und die Daten wieder laden. Recht aufwändig für eine recht simple Aufgabe finde ich.

Ich hab jetzt nochmal eine Anfrage im eclipse-forum gestellt. Mal sehen, was dabei rauskommt.
 
Also ich habe das vorerst gelöst, indem ich deinem Rat gefolgt bin und einfach alle Buttons neu erzeuge. Das mag bei den Buttons ja noch relativ einfach funktionieren. Bei komplexen Composites, in denen man z.B. mit der Maus was zeichnen kann oder viele Textfelder hat müsste man allerdings erst alle Eingaben sichern, alles disposen, alles neu erzeugen und die Daten wieder laden. Recht aufwändig für eine recht simple Aufgabe finde ich.

Ansichtsache ob es simpel ist dynamisch das layout zu ändern. Wenn du es einfach findest kannst einen eigenen LayoutManager schreiben der einen index auswertet 😉.
 

Zurück
Oben