ColumnsLayout
El componente ColumnsLayout
en webforJ permite a los desarrolladores crear diseños utilizando un diseño vertical flexible y receptivo. Este diseño proporciona columnas dinámicas que se ajustan según el ancho disponible. Este componente simplifica la creación de diseños de varias columnas al gestionar automáticamente los puntos de ruptura y las alineaciones.
Esto se puede utilizar en lugar de, o en combinación con, el componente FlexLayout
- una herramienta igualmente potente para diseños horizontales.
Basics
Cuando se instancia por primera vez, el ColumnsLayout
utiliza dos columnas para mostrar los elementos añadidos al diseño. Por defecto, ocupa el ancho completo de sus elementos padre y crece según sea necesario para ajustarse al contenido adicional. La visualización de los elementos añadidos se puede calibrar más con el uso de los ajustes de Breakpoint
y Alignment
, que se discuten en las siguientes secciones con más detalle.
Mostrar Código
- Java
Breakpoints
En su núcleo, el ColumnsLayout
está diseñado para proporcionar un sistema fluido y similar a una cuadrícula que se adapta al ancho de su contenedor padre. A diferencia de los sistemas de cuadrícula fijos tradicionales, este diseño permite a los desarrolladores especificar un número de columnas a un ancho determinado y calcula dinámicamente el número de columnas mostradas en función de los objetos Breakpoint
establecidos.
Esto permite que un ColumnsLayout
se adapte suavemente desde un espacio más restringido en pantallas pequeñas hasta un área más amplia en pantallas más grandes, ofreciendo un diseño receptivo a un desarrollador sin necesidad de una implementación personalizada.
Understanding a Breakpoint
Un Breakpoint
se puede especificar utilizando la clase Breakpoint
, que toma tres parámetros:
-
Nombre (opcional): Nombrar un punto de ruptura te permite hacer referencia a él en configuraciones futuras.
-
Ancho mínimo: Cada punto de ruptura tiene un rango específico que determina cuándo se aplica su diseño. El ancho mínimo se define explícitamente, y el siguiente punto de ruptura determina el ancho máximo si existe. Puedes usar un entero para definir el ancho mínimo en píxeles o usar un
String
para especificar otras unidades comovw
,%
, oem
. -
Número de columnas: Especifica cuántas columnas debe tener un punto de ruptura con este entero.
Breakpoint
Los puntos de ruptura se evalúan en orden ascendente de ancho, lo que significa que el diseño utilizará el primer punto de ruptura coincidente.
Aplicando puntos de ruptura
Los puntos de ruptura se aplican a un ColumnsLayout
de una de dos maneras: durante la construcción o en una List
utilizando el método setBreakpoints()
:
ColumnsLayout layout = new ColumnsLayout();
List<Breakpoint> breakpoints = List.of(
// Una columna en anchos >= 0px
new Breakpoint(0, 1),
// Dos columnas en anchos >= 600px
new Breakpoint(600, 2),
// Cuatro columnas en anchos >= 1200px
new Breakpoint(1200, 4));
layout.setBreakpoints(breakpoints);
La demostración a continuación muestra un ejemplo de configurar múltiples puntos de ruptura en la construcción, utilizando puntos de ruptura para configurar el Span
de un componente y demuestra las capacidades de redimensionamiento del ColumnsLayout
cuando se redimensiona la aplicación:
Mostrar Código
- Java
Column Span
y spans por Breakpoint
Los spans de columna en ColumnsLayout
te permiten controlar cuántas columnas ocupa un elemento, dándote más control sobre la apariencia de tu diseño a diferentes anchos. Esto es especialmente útil cuando necesitas que ciertos elementos ocupen más o menos espacio según el tamaño de la pantalla o los requisitos de diseño.
Managing column spans
Por defecto, cada elemento en el ColumnsLayout
ocupa exactamente una columna. Sin embargo, puedes personalizar este comportamiento configurando el span de columna para elementos individuales. Un span especifica cuántas columnas debe ocupar un elemento.
Button button = new Button("Click Me");
layout.addComponent(button);
// El elemento ocupa dos columnas
layout.setSpan(button, 2);
En el ejemplo anterior, el botón ocupa dos columnas en lugar de la predeterminada. El método setSpan()
te permite especificar cuántas columnas debe abarcar un componente dentro del diseño.
Ajustando los spans de columna con puntos de ruptura
También puedes ajustar los spans de columna dinámicamente según los puntos de ruptura. Esta característica es útil cuando deseas que un elemento abarque diferentes cantidades de columnas según el tamaño de la pantalla. Por ejemplo, es posible que desees que un elemento ocupe una columna en dispositivos móviles, pero que abarque múltiples columnas en pantallas más grandes.
TextField email = new TextField("Email");
//...
List.of(
new ColumnsLayout.Breakpoint("default", 0 , 1),
new ColumnsLayout.Breakpoint("small", "20em", 1),
new ColumnsLayout.Breakpoint("medium", "40em", 2),
new ColumnsLayout.Breakpoint("large", "60em", 3)
)
//...
//el campo de correo electrónico abarcará dos columnas cuando el punto de ruptura medio esté activo
columnsLayout.setSpan(email, "medium", 2);
//...
Este nivel de personalización asegura que tu diseño se mantenga receptivo y apropiadamente estructurado en diferentes dispositivos.
Colocando elementos dentro de columnas
ColumnsLayout
proporciona la capacidad de colocar elementos en columnas específicas, brindando un mayor control sobre la disposición de los elementos. Puedes especificar manualmente dónde debería aparecer un elemento dentro del diseño, asegurando que los componentes importantes se muestren como se pretende.
Colocación básica de columnas
Por defecto, los elementos se colocan en la siguiente columna disponible, llenando de izquierda a derecha. Sin embargo, puedes anular este comportamiento y especificar la columna exacta donde debe colocarse un elemento. Para colocar un elemento en una columna específica, utiliza el método setColumn()
. En este ejemplo, el botón se coloca en la segunda columna del diseño, independientemente del orden en que se añadió respecto a otros componentes:
Button button = new Button("Submit");
layout.addComponent(button);
// Coloca el elemento en la segunda columna
layout.setColumn(button, 2);
Ajustando la colocación por punto de ruptura
Al igual que con los spans de columna, utilizas puntos de ruptura para ajustar la colocación de los elementos según el tamaño de la pantalla. Esto es útil para reordenar o desplazar elementos en el diseño a medida que cambia el viewport.
TextField email = new TextField("Email");
//...
List.of(
new ColumnsLayout.Breakpoint("default", 0 , 1),
new ColumnsLayout.Breakpoint("small", "20em", 1),
new ColumnsLayout.Breakpoint("medium", "40em", 2),
new ColumnsLayout.Breakpoint("large", "60em", 3)
)
//...
//el campo de correo electrónico aparecerá en la segunda columna cuando el punto de ruptura medio esté activo
columnsLayout.setColumn(email, "medium", 2);
//...
En la siguiente demostración, observa que cuando se activa el punto de ruptura "medium"
, el campo email
abarca ambas columnas, y el campo confirmPassword
se coloca en la primera columna, en lugar de su colocación predeterminada en la segunda columna:
Mostrar Código
- Java
Cuando múltiples elementos se colocan en un diseño con diferentes spans y/o asignaciones de columna, asegúrate de que los spans y las colocaciones combinadas de los elementos en una fila no se superpongan. El diseño intenta gestionar el espaciado automáticamente, pero un diseño cuidadoso de spans y puntos de ruptura evita la visualización no deseada de elementos.
Alineaciones de elementos verticales y horizontales
Cada elemento en el ColumnsLayout
se puede alinear tanto horizontal como verticalmente dentro de su columna, dando control sobre cómo se posiciona el contenido dentro del diseño.
La alineación horizontal de un elemento se controla mediante el método setHorizontalAlignment()
. Esta propiedad determina cómo se alinea un elemento dentro de su columna a lo largo del eje horizontal.
La alineación vertical especifica cómo se posiciona un elemento dentro de su columna a lo largo del eje vertical. Esto es útil cuando las columnas tienen alturas variables y se quiere controlar cómo se distribuyen verticalmente los elementos.
Las opciones de Alignment
disponibles incluyen:
START
: Alinea el elemento a la izquierda de la columna (predeterminado).CENTER
: Centra el elemento horizontalmente dentro de la columna.END
: Alinea el elemento a la derecha de la columna.STRETCH
: Estira el componente para llenar el diseño.BASELINE
: Se alinea según el texto o contenido dentro de la columna, alineando los elementos a la línea base del texto en lugar de otras opciones de alineación.AUTO
: Alineación automática.
Mostrar Código
- Java
En la demo anterior, al botón Submit
se le ha dado ColumnsLayout.Alignment.END
para asegurar que aparezca al final, o en este caso a la derecha, de su columna.
Espaciado de elementos
Controlar el espacio entre columnas en el ColumnsLayout
entre columnas (espaciado horizontal) y entre filas (espaciado vertical) ayuda a los desarrolladores a ajustar el diseño.
Para establecer el espaciado horizontal del diseño, utiliza el método setHorizontalSpacing()
:
// Establecer 20px de espacio entre columnas
layout.setHorizontalSpacing(20);
De manera similar, usa el método setVerticalSpacing()
para configurar el espacio entre filas del diseño:
// Establecer 15px de espacio entre filas
layout.setVerticalSpacing(15);
Puedes usar un entero para definir el ancho mínimo en píxeles o usar un String
para especificar otras unidades como vw
, %
, o em
.
Diseños horizontales y verticales
Construir diseños receptivos y atractivos es posible utilizando tanto el componente FlexLayout
como el componente ColumnsLayout
, así como una combinación de ambos. A continuación se muestra un ejemplo del artículo formulario creado en el FlexLayout, pero utilizando un esquema ColumnLayout
en su lugar:
Mostrar Código
- Java