Creé un JFrame
inicializado con un BorderLayout
y un JScrollPane
como su elemento CENTER
.FlowLayout de Java no cambia el tamaño correctamente
El panel de desplazamiento está configurado con las políticas VERTICAL_SCROLLBAR_ALWAYS
y HORIZONTAL_SCROLLBAR_NEVER
. La intención de mi frame
es tener un ancho controlado, mientras que la altura debería crecer/contraerse a medida que se agregan/eliminan datos.
Dentro de mi scroll pane
, he añadido un simple JPanel
(llamémosle el panel de contenido) que se inicializa con un (política y LEADING
) FlowLayout
.
Para probar esto, simplemente llene mi content panel
con 20 JLabel("Item " + n)
componentes donde n
es el contador de bucles.
Esperaría ver mi labels
en una sola fila si el frame
es lo suficientemente grande y las etiquetas se ajustan a otras líneas cuando reduzco el ancho. Pero, en cambio, solo se muestra una línea sin envoltura ... alguna vez.
¿Alguien sabe por qué el flow layout
no se envuelve cuando un scroll pane
está involucrado?
Si quito el scroll pane
todos juntos y poner el content panel
directamente en la frame
, el efecto deseado se produce envoltorio, pero si la altura frame
se contrae menor que la altura content panel
simplemente desaparece.
La idea es que quiero que mi labels
se envuelva cuando sea necesario, pero también siempre estará visible si eso significa tener que desplazarse hacia arriba/abajo.
¿Alguna sugerencia sobre cómo solucionar esto?
Gracias.
Parece que funciona exactamente como es necesario/esperado hasta ahora! ¡Esperemos que Oracle invierta más en Swing de lo que Sun estaba dispuesto a hacer! Muchas gracias camickr! – Jeach
¿Diría que FlowLayout tiene errores o cree que Sun intentó hacerlo de esta manera? ¡El WrapLayout tiene mucho más sentido que debería ser parte de Swing! – Jeach
No es un error porque no hay un código que intente recalcular dinámicamente el tamaño preferido. Es solo la forma en que alguien lo diseñó para funcionar. – camickr