Saltar al contenido
CrossFly es 100% open sourceSíguenos en GitHub
CrossFlyCrossFly
Empezar

Esta página fue traducida automáticamente del portugués y puede contener errores. La versión en portugués es la canónica.

VerticalLayout

Apila los componentes hijos de arriba hacia abajo (una fila por hijo), cada uno ocupando el ancho del contenedor (menos el margen). Es el layout más usado — la columna vertebral de la mayoría de las pantallas.

🟢 · Paquete: dev.crossfly.ui.layout · Extiende: Layout

Cuándo usar

  • Pantallas en columna: encabezado + contenido + pie.
  • Cualquier lista de secciones apiladas.

Cuándo NO usar

add(...) — firma y semántica

public VerticalLayout add(float altura, Component c)

El parámetro altura controla la fila:

Valor Significado
LAY_AUTO (0f) altura natural del componente (getAutoHeight()) — escala con la fuente
LAY_FILL (-1f) rellena el sobrante (usa una fila FILL por layout)
> 0 (ex. 0.25f) fracción de la altura del contenedor (25%) — no son píxeles

Constructores

Constructor Descripción
new VerticalLayout() alineación horizontal centrada de cada fila
new VerticalLayout(Position h, Position v) h = alineación horizontal de las filas (START/CENTER/END)

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();

      setLayout(new VerticalLayout(Position.START, Position.START));

      Component lista = new Component();          // contenido elástico (placeholder)
      lista.setLayout(new VerticalLayout(Position.START, Position.START));
      for (int i = 1; i <= 5; i++)
         lista.add(LAY_AUTO, new Label("Produto " + i));

      add(LAY_AUTO, new Label("Produtos"));   // cabecera — altura natural
      add(LAY_FILL, lista);                    // contenido — absorbe todo el sobrante
      add(LAY_AUTO, new Button("Adicionar"));  // pie — altura natural
   }
}

Los fragmentos siguientes muestran solo el núcleo (lo que va dentro de onShow()). Para ejecutar, colócalos en el esqueleto MainWindow anterior.

Uso básico

setLayout(new VerticalLayout(Position.START, Position.START));
add(LAY_AUTO, new Label("Produtos"));   // cabecera — altura natural
add(LAY_FILL, lista);                    // contenido — absorbe todo el sobrante
add(LAY_AUTO, new Button("Adicionar"));  // pie — altura natural

Cómo distribuye

┌──────────────────────────┐
│ Label   (LAY_AUTO)        │  ← altura natural
├──────────────────────────┤
│                          │
│ lista   (LAY_FILL)       │  ← preenche o que sobrou
│                          │
├──────────────────────────┤
│ Button  (LAY_AUTO)        │  ← altura natural
└──────────────────────────┘

Buenas prácticas

  • 1 fila LAY_FILL + las demás LAY_AUTO es el arreglo más robusto (no se rompe si la fuente crece o el teclado se abre).
  • Espaciar filas: inserta add(LAY_AUTO, Gap.ofFont(0.25f)) como espaciador (el Gap cuenta como una fila de media altura de fuente).

Errores comunes

  • Dar fracción a todas las filas (add(0.2f, …) en todo) — frágil; prefiere auto + 1 fill.
  • Creer que add(0.7f, x) es 70% del sobrante — es 70% de la altura total del contenedor.
  • Más de una fila LAY_FILL — solo la última prevalece.

Ver también

¿Te resultó útil esta página?