Pular para o conteúdo
CrossFly é 100% open sourceSiga no GitHub
CrossFlyCrossFly
Começar

HorizontalLayout

Dispõe os componentes-filhos lado a lado (uma coluna por filho), da esquerda para a direita. É o par horizontal do VerticalLayout — ideal para barras e linhas de controles.

🟢 · Pacote: dev.crossfly.ui.layout · Estende: Layout

Quando usar

  • Barras de busca/ação: [ícone] [campo que estica] [botão].
  • Qualquer linha de controles.

Quando NÃO usar

add(...) — assinatura e semântica

public HorizontalLayout add(float largura, Component c)
Valor Significado
LAY_AUTO (0f) largura natural do componente
LAY_FILL (-1f) preenche a sobra (use uma coluna FILL)
> 0 (ex. 0.5f) fração da largura do contêiner

Construtores

Construtor Descrição
new HorizontalLayout() itens centralizados verticalmente
new HorizontalLayout(Position h, Position v) v = alinhamento vertical de cada coluna

Exemplo completo (copiar, colar e rodar)

package com.exemplo;

import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;

/** Tela principal executável. Aponte o launcher (classname) e rode: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
   @Override
   public void onShow() throws Exception
   {
      super.onShow();

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

      Component barra = new Component();
      barra.setLayout(new HorizontalLayout(Position.START, Position.CENTER));
      barra.add(LAY_AUTO, new Label("🔎"));               // largura natural
      barra.add(LAY_FILL, new TextField("Buscar..."));     // estica
      barra.add(LAY_AUTO, new Button("OK"));               // largura natural

      add(LAY_AUTO, barra);                    // a barra ocupa uma linha do topo
      add(LAY_FILL, new Component());          // resto da tela (placeholder)
   }
}

Os trechos abaixo mostram só o miolo (o que vai dentro de onShow()). Para rodar, coloque-os no esqueleto MainWindow acima.

Uso básico

Component barra = new Component();
barra.setLayout(new HorizontalLayout(Position.START, Position.CENTER));
barra.add(LAY_AUTO, new ImageView(/* ícone */));   // largura natural
barra.add(LAY_FILL, new TextField("Buscar..."));    // estica
barra.add(LAY_AUTO, new Button("OK"));              // largura natural

Como arranja

┌────────┬───────────────────────────┬────────┐
│ ícone  │ campo (LAY_FILL, estica)   │ botão  │
│ (auto) │                           │ (auto) │
└────────┴───────────────────────────┴────────┘

Boas práticas

  • 1 elemento LAY_FILL por linha (o que deve esticar).
  • Dois “elásticos” com proporção fixa → frações (0.5f/0.5f) ou GridLayout.

Erros comuns

  • Dois LAY_FILL na mesma linha.
  • Usar pixels (add(120, x)) em vez de fração/auto — quebra a responsividade.

Veja também

Esta página foi útil?