Esta página fue traducida automáticamente del portugués y puede contener errores. La versión en portugués es la canónica.
GridLayout
Distribuye los hijos en una cuadrícula: cada fila tiene su propia división de columnas por fracción, y la altura de la fila viene del componente más alto. Excelente para formularios “etiqueta : campo”.
🟡 · Paquete:
dev.crossfly.ui.layout· Extiende:Layout
Cuándo usar
- Formularios alineados (etiqueta | campo) con proporción estable.
- Tablas simples de celdas.
Cuándo NO usar
- Una sola columna → VerticalLayout.
- Anclar un componente a otro → RelativeLayout.
add(...) — firma y semántica (¡atención al orden!)
public GridLayout add(Object... v) // TODOS los anchos, luego TODOS los componentes
Pasa primero todos los anchos, luego todos los componentes (misma cantidad):
| Ancho | Significado |
|---|---|
> 0 (ex. 0.35f) |
fracción del ancho de la cuadrícula (35%) |
LAY_AUTO (0f) |
ancho automático (la celda usa el tamaño del contenido) |
Constructores
| Constructor | Descripción |
|---|---|
new GridLayout() |
alineación START/START |
new GridLayout(Position h, Position v) |
alineación horizontal/vertical de las filas |
Ejemplo completo (copiar, pegar y ejecutar)
package com.exemplo;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
/** Pantalla principal ejecutable. Apunta el launcher (classname) y corre: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
@Override
public void onShow() throws Exception
{
super.onShow();
GridLayout form = new GridLayout(Position.START, Position.START);
// rótulo (35%) | campo (65%) — anchos primero, componentes después:
form.add(0.35f, 0.65f, new Label("Nome"), new TextField(""));
form.add(0.35f, 0.65f, new Label("E-mail"), new TextField(""));
form.add(0.35f, 0.65f, new Label("Telefone"), new TextField(""));
Component painel = new Component();
painel.setLayout(form);
setLayout(new VerticalLayout(Position.START, Position.START));
add(LAY_AUTO, new Label("Cadastro"));
add(LAY_FILL, painel);
}
}
Los fragmentos siguientes muestran solo el núcleo (lo que va dentro de
onShow()). Para ejecutar, colócalos en el esqueletoMainWindowanterior.
Uso básico
GridLayout form = new GridLayout(Position.START, Position.START);
// rótulo (35%) | campo (65%) — anchos primero, componentes después:
form.add(0.35f, 0.65f, new Label("Nome"), new TextField(""));
form.add(0.35f, 0.65f, new Label("E-mail"), new TextField(""));
form.add(0.35f, 0.65f, new Label("Telefone"), new TextField(""));
Component painel = new Component();
painel.setLayout(form);
Cómo distribuye
┌───────────┬──────────────────────┐
│ Nome (35%)│ [campo] (65%) │ ← linha 1
├───────────┼──────────────────────┤
│ E-mail │ [campo] │ ← linha 2
└───────────┴──────────────────────┘
Buenas prácticas
- Las fracciones de una fila suman ~1.0 para cubrir el ancho.
- Las filas pueden tener números de columnas diferentes (cada
adddefine una fila).
Errores comunes
- Intercalar ancho y componente:
add(0.35f, label, 0.65f, field)→ lanzaUIException. Lo correcto esadd(0.35f, 0.65f, label, field)(anchos juntos, luego componentes). - Número de anchos ≠ número de componentes →
UIException(cols*2 == args).
Ver también
¿Te resultó útil esta página?¡Gracias por tu opinión!