Estoy buscando un LayoutManager
que me permita mostrar un conjunto de componentes en un contenedor (por ejemplo, un JPanel), en columnas, aproximadamente de la siguiente manera.Swing: administrador de disposición de flujo de columna?
- El ancho del contenedor es una restricción de entrada.
- altura preferida del contenedor es una función de la anchura, y es o bien:
- la altura mínima necesaria para obtener los componentes para encajar dentro de la anchura, cuando presenta en más de una columna.
- la altura mínima necesaria para que los componentes quepan en una sola columna.
- Los componentes se colocarán en orden de periódico-columna, de arriba a abajo y luego de izquierda a derecha.
Aquí hay un ejemplo (pantalla de texto de baja tecnología) que muestra 13 componentes. Si pueden ajustarse en 3 columnas, que se vería así:
Foo1 Foo6 Foo11
Foo2 Foo7 Foo12
Foo3 Foo8 Foo13
Foo4 Foo9
Foo5 Foo10
Si eso es demasiado amplia, se verían así:
Foo1 Foo8
Foo2 Foo9
Foo3 Foo10
Foo4 Foo11
Foo5 Foo12
Foo6 Foo13
Foo7
Y si eso es demasiado ancho, se verían de esta manera:
Foo1
Foo2
Foo3
Foo4
Foo5
Foo6
Foo7
Foo8
Foo9
Foo10
Foo11
Foo12
Foo13
¿hay un LayoutManager preexistente que pueda utilizar o subclase de hacer algo como esto?
editar: esto está muy cerca de this other question about vertical layout, pero ese diseño tiene la altura componente que es la restricción, y la mía tiene el ancho componente que es una restricción.
gracias, pero GridBagLayout y otros diseños orientados a la cuadrícula tienen un tamaño de cuadrícula estática. Necesito averiguar el tamaño de la cuadrícula dinámicamente. –
¿Has probado tu propia demostración? Fluye horizontalmente, no verticalmente.(Para su información, no tiene mucho sentido llamar a setSize() cuando puede hacerlo interactivamente cambiando el tamaño del JFrame) –