# SwiXML - Layoutart



## Gas (30. Dez 2009)

Hallo,
ich habe ein Frage bezüglich SwiXML. Ich möchte ein Panel erstellen auf dem die Komponenten "absolut" angegeben werden können.

Ziel: Auf dem Panel soll ein Label (+Picture als Hintergrund) liegen. Über diesem Label sollen dann an bestimmten Positionen Textfelder sein.


```
<panel layout="absolute">
            <label id="picture" icon="test.jpg"/>

            <textfield columns="5" x="50" y="25"/>
            <textfield columns="5" x="50" y="55"/>
            <textfield columns="5" x="50" y="125"/>
</panel>
```

Das Label einfügen und Icon setzen ist nicht das Problem. Ich bekomme nur einfach kein AbsoluteLayout hin, hierfür brauch ich Hilfe.
Frage: Gibt es für SwiXML überhaupt dieses Layout? Wenn ja, wie funktioniert dieses?

Gruß Chris


----------



## HoaX (31. Dez 2009)

Wieso nicht einfach:

```
<panel layout="BorderLayout">
    <label id="picture" icon="test.jpg" constraints="BorderLayout.CENTER"/> <!-- Oder nur CENTER? Lang nichtmehr verwendet ... -->
    <panel opaque="false" constraints="BorderLayout.CENTER"> <!-- evtl. die reihenfolge vertauschen mit dem picture-Label -->
        <!-- hier halt mit beliebigem Layout die Textfelder anordnen -->
            <textfield columns="5" />
            <textfield columns="5" />
            <textfield columns="5" />
</panel>
```


----------



## Gas (31. Dez 2009)

@HoaX: Danke für die Antwort.
Auf die Idee, beides in den "Center" zu setzen,  bin ich auch schon gekommen.
Ein Borderlayout lässt dies doch aber nicht zu, d.h. es wird in diesem Fall immer die letzte Komponente drübergezeichnet.

Was schon einigermaßen in die richtige Richtung geht ist folgendes:


```
<label id="picture" icon="test.jpg" layout="gridbaglayout">
                <textfield columns="5" x="20" y="25">
                    <gridbagconstraints insets="5,5,5,5" gridx="0" gridy="0"/>
                </textfield>
                <textfield columns="5" x="50" y="25">
                    <gridbagconstraints insets="5,5,5,5" gridx="0" gridy="1"/>
                </textfield>
                <textfield columns="5" x="50" y="55">
                    <gridbagconstraints insets="5,5,5,5" gridx="1" gridy="0"/>
                </textfield>
                <textfield columns="5" x="50" y="125">
                    <gridbagconstraints insets="5,5,5,5" gridx="1" gridy="2"/>
                </textfield>
        </label>
```

Hierbei liegen die Textfelder auf dem Picture!
Mein Problem bleibt jedoch z.T. bestehen. Ich möchte die Positionen der Textfelder "genau" angeben können.
Und hierfür brauch ich eine Art "Absolutelayout".

Mit dem genutzten Gridbag liegen alle Textfelder in der Mitte, kA wieso...


Eine weitere Idee die ich hatte, war eine Art "CustomTag" zu erzeugen. Diesen Tag würde ich dann in Java definieren (=Absolutelayout). Ich weiß jedoch nicht wie man dies umsetzen kann.

Kann man für ein Tag auch "CustomAttributes" vergeben? Wenn ja, wie müsste der XML-Code verändert werden?

Gruß Chris


----------



## HoaX (31. Dez 2009)

Ich setzte ja opaque="false", so dass man das darunterliegende sieht. Wenn es mit BorderLayout nicht geht dann probiers da auch mal mit GridBayLayout. Ich hab das in einem Projekt auch mal so verwendet, komm aber grad nich an den Code ran.


----------



## Gas (2. Jan 2010)

Hallo,
erstmal ein gesundes neues Jahr an alle...

@HoaX opaque="false" zeigt leider keine Wirkung!
Ich habe jetzt mehrere Layouts probiert und auch die Reihenfolge (Label, Panel-Textfelder) variiert, außerdem opaque="false" an verschiedene Stellen gesetzt. Leider führte nichts zum Erfolg!!!

Nur durch zuletzt geposteten Code (Textfelder im Tag des Labels) liegen Textfelder auf dem Picture.

Mit welchem Layout kann ich aber die Position (x,y) genau angeben?


----------

