2010-09-07 22 views
5

Estoy tratando de construir un panel de estado simple usando MigLayout de la siguiente manera:Cómo prevenir MigLayout de exceder los límites de un contenedor

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

Esto funciona bien siempre y cuando el mensaje de estado que aparece en la etiqueta de estado es corta suficiente para caber dentro del tamaño del panel actual (el botón cancelar permanece justificado a la derecha, y la barra de progreso cambia de tamaño para ocupar el espacio restante). Si el mensaje de estado es demasiado largo, no se recorta y hace que el área exceda los límites del contenedor, lo que da como resultado que el botón de cancelación sea sacado de la pantalla.

¿Alguna sugerencia sobre cómo evitar que esto suceda?

Gracias

Respuesta

8

Intente configurar la anchura máxima de la etiqueta a 100%.

Esto se puede hacer cambiando el diseño de la etiqueta para "span 2, wrap, wmax 100%"

En mis pruebas, he encontrado que todavía no se veía del todo bien, por lo que puede restar un poco de longitud (algo como wmax 100% - 10px) para sacarlo del borde.

+1

Gracias - Solo estaba ingresando para responder mi propia pregunta con la misma solución, pero me ganaste. También encontré que el 100% era demasiado grande, posiblemente sin permitir el borde o las inserciones. También intenté usar la referencia "principal" en la expresión de ancho, pero veo que MigLayout ya no lo permite. (Yo te votaría pero todavía no tengo suficientes puntos) – zorgbargle

+0

Y esta es la razón por la que amo Internet. ¡Gracias a los dos! –

Cuestiones relacionadas