2010-09-07 10 views
5

Ich versuche, eine einfache Statusanzeige mit MigLayout zu konstruieren, wie folgt:Wie um zu verhindern MigLayout eines Containers Grenzen überschreiten

setLayout(new MigLayout("fillx", "[][p]")); // removing constructor args makes no difference 
add(createStatusLabel(), "span 2, wrap"); 
add(createProgressBar(), "growx, pushx"); 
add(createCancelButton(), ""); 

Dies funktioniert gut, solange die Statusmeldung durch das Status-Label angezeigt kurz ist genug, um in die Größe des aktuellen Panels zu passen (die Schaltfläche "Abbrechen" bleibt rechtsbündig und die Fortschrittsleiste wird angepasst, um den verbleibenden Platz zu belegen). Wenn die Statusmeldung zu lang ist, wird sie nicht beschnitten und der Bereich überschreitet die Grenzen des Containers, was dazu führt, dass die Abbrechen-Schaltfläche vom Bildschirm weggedrückt wird.

Haben Sie Vorschläge, wie Sie dies verhindern können?

Dank

Antwort

8

Versuchen Sie, die maximale Breite des Etiketts auf 100%.

Sie können dies tun, indem Sie das Layout für das Etikett zu ändern, um "span 2, wrap, wmax 100%"

In meinen Tests fand ich, dass es noch nicht ganz richtig aussah, so dass Sie ein wenig von Länge subtrahieren sollen (etwas wie wmax 100% - 10px), um es von der Kante wegzubringen.

+1

Danke - Ich habe mich gerade eingeloggt, um meine eigene Frage mit der gleichen Lösung zu beantworten, aber Sie haben mich dazu geschlagen. Ich fand auch 100% war zu groß - möglicherweise nicht für die Grenze oder Einsätze. Ich habe auch versucht, die "Eltern" -Referenz in der Breite Ausdruck, aber ich sehe MigLayout nicht mehr erlaubt dies. (Ich würde dich abstimmen, aber ich habe noch nicht genug Punkte) – zorgbargle

+0

Und deshalb liebe ich das Internet. Danke euch beiden! –

Verwandte Themen