EvenlySpacedLayout
Distribui os filhos com espaçamento igual em um eixo (horizontal por padrão), preservando o tamanho de cada um. Ideal para toolbars de ícones/botões de tamanho próprio.
🟡 · Pacote:
dev.crossfly.ui.layout· Estende:Layout
Quando usar
- Barras de ações / toolbars de ícones que devem ficar igualmente espaçados.
Quando NÃO usar
- Quando os itens devem esticar para preencher → use frações no HorizontalLayout.
add(...) e construtores
public EvenlySpacedLayout add(Component c); // (ou add(Component...))
new EvenlySpacedLayout(); // HORIZONTAL (default)
new EvenlySpacedLayout(Orientation.VERTICAL); // eixo vertical
⚠️ Ponto-chave: ele NÃO dimensiona os itens
O layout só distribui os espaços — o tamanho de cada item vem dos bounds atuais ou do
auto-size. Para itens responsivos, dê a eles um tamanho pelo estilo (autoWidth/autoHeight) com
Relative.
Exemplo completo (copiar, colar e rodar)
package com.exemplo;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.graphics.*;
/** 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();
String[] icones = { "home", "search", "settings", "person" };
Component toolbar = new Component();
toolbar.setLayout(new EvenlySpacedLayout()); // horizontal
Relative lado = Relative.ofScreen(0.12f, ScreenSize.MIN); // 12% do menor lado → quadrado responsivo
for (String glyph : icones) {
Button b = new Button(new MaterialIcon(glyph));
b.getStyle().autoWidth(lado).autoHeight(lado); // tamanho responsivo pelo estilo
toolbar.add(b);
}
setLayout(new VerticalLayout(Position.START, Position.START));
add(LAY_FILL, new Component()); // conteúdo (placeholder)
add(LAY_AUTO, toolbar); // barra de ações no rodapé
}
}
Os trechos abaixo mostram só o miolo (o que vai dentro de
onShow()). Para rodar, coloque-os no esqueletoMainWindowacima.
Uso básico
Component toolbar = new Component();
toolbar.setLayout(new EvenlySpacedLayout()); // horizontal
Relative lado = Relative.ofScreen(0.12f, ScreenSize.MIN); // 12% do menor lado → quadrado responsivo
for (String glyph : icones) {
Button b = new Button(new MaterialIcon(glyph));
b.getStyle().autoWidth(lado).autoHeight(lado); // tamanho responsivo pelo estilo
toolbar.add(b);
}
Como arranja
│ [i1] [i2] [i3] │ ← espaços iguais entre e nas bordas; itens mantêm seu tamanho
Boas práticas
- Dê o tamanho dos itens por
Relative(ofScreen(..., ScreenSize.MIN)para quadrados que adaptam a portrait/landscape).
Erros comuns
- Esperar que os itens fiquem do mesmo tamanho automaticamente — não ficam; defina o tamanho.
- Usar pixels fixos para o tamanho dos itens.
Veja também
Esta página foi útil?Obrigado pelo feedback!