Ok, ich hole mal etwas weiter aus.
Für meine Diplomarbeit schreibe ich eine XUL-Implementierung (eigener Dialekt), die unter anderem auf Swing umgesetzt wird. Sprich: Der User schreibt XML-Dateien, die die Oberfläche beschreiben, mein Programm rendert daraus eine Swingoberfläche. In diesen XML-Dateien kann die Größe einzelner Komponenten mittels "width"- und "height"-Attributen vorgegeben werden. Es müssen aber nicht beide Größen angegeben sein.
Zunächst werden die Höhen- und Breitenangaben im XML-File ja auch nur im XUL-Model zwischengespeichert, wo sie keine Probleme machen. Ein nicht existierender Wert wird durch -1 symbolisiert. Diese Werte lassen sich vernünftigerweise nicht 1:1 in Swing übertragen (wenn eine Angabe fehlt), weil eine Komponente mit Breite oder Höhe kleiner 0 nicht angezeigt wird.
Problem ist jetzt zum Beispiel folgendes:
Ich habe ein Panel, für das eine maximale Breite von 400px im XUL-File gegeben ist. Befrage ich den LayoutManager des Panels danach, was er als preferredSize vorschlägt, erhalte ich 4056x22 Pixel, weil das Panel einen langen Text enthält, der vom LayoutManager in eine Zeile gepackt wird (Das Panel liegt in einer JScrollPane, so das theoretisch unendlich viel Platz vorhanden ist). Mit dieser berechneten Höhe kann ich nichts anfangen, weil ein mehrfach umgebrochener Text natürlich deutlich mehr Platz in Anspruch nimmt.
Wie kann ich also den LayoutManager (oder das UI, je nachdem, wer denn letztlich die PreferredSize berechnet) dazu zwingen, zu beachten, das der Elterncontainer nicht breiter als 400px werden soll? Beim Resizen des Fensters macht der LayoutManager doch auch nichts anderes: Die Größe des Containers ändert sich, also müssen die Kinder neu angeordnet werden.
mpG
Tobias