Entre os vários layouts estão:
BorderLayout: você pode adicionar os objetos na posição norte, sul, leste, oeste e centro.
FlowLayout: adiciona os objetos linearmente, e quando ultrapassa o tamanho do frame ele quebra a linha, pode-se escolher se quer da esquerda pra direita, da direita pra esquerda ou centro, o padrão é esquerda-direita.
GridLayout: especifica-se o total de linhas e colunas, os objetos são adicionados até preencher todas as colunas da primeira linha, depois todas as colunas da segunda linha e assim sucessivamente.
Apesar de apenas ter comentado esses, que são os que eu vou usar nesse artigo, possui muitos outros como GridBagLayout que você determina o tanto de colunas e linhas que o componente irá utilizar.
Vamos ao exemplo:
Pra começar precisamos importar:
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
O JFrame para nossa classe que será a janela estender, JButton para adicionar botões, o JPanel para podermos criar os painéis, e os layouts que utilizaremos.
Criando a nossa janela:
public class Janela extends JFrame{
// botoes que serao inseridos no panelNorte que possui FlowLayout
private JButton button1Norte;
private JButton button2Norte;
private JButton button3Norte;
private JButton button4Norte;
// botoes que serao inseridos no panelSul que possui GridLayout
private JButton button1Sul;
private JButton button2Sul;
private JButton button3Sul;
private JButton button4Sul;
//panel com FlowLayout
private JPanel panelNorte;
private JPanel panelSul;
public Janela()
{
super("Janela com multiplos layouts");
this.Init();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(500, 500);
this.setVisible(true);
}
private void Init()
{
//inicializa os botoes
this.button1Norte = new JButton("Botao1Norte");
this.button1Sul = new JButton("Botao1Sul");
this.button2Norte = new JButton("Botao2Norte");
this.button2Sul = new JButton("Botao2Sul");
this.button3Norte = new JButton("Botao3Norte");
this.button3Sul = new JButton("Botao3Sul");
this.button4Norte = new JButton("Botao4Norte");
this.button4Sul = new JButton("Botao4Sul");
// inicializa os JPanels com os layouts
this.panelNorte = new JPanel(new FlowLayout());
//GridLyout com duas linhas e duas colunas
this.panelSul = new JPanel(new GridLayout(2, 2));
//insere os botoes na panelNorte, por ser FlowLayout sera inserido da esquerda para a direita
this.panelNorte.add(this.button1Norte);
this.panelNorte.add(this.button2Norte);
this.panelNorte.add(this.button3Norte);
this.panelNorte.add(this.button4Norte);
//insere os botoes no panelSul, por ser GridLayout ele preenche a primeira linha, depois a
// segunda
// e assim por diante
this.panelSul.add(this.button1Sul);
this.panelSul.add(this.button2Sul);
this.panelSul.add(this.button3Sul);
this.panelSul.add(this.button4Sul);
//insere os panels na janela, o BorderLayout indica a posicao podendo ser
//norte, sul, leste, oeste ou centro
this.add(this.panelNorte, BorderLayout.NORTH);
this.add(this.panelSul ,BorderLayout.SOUTH);
}
}
// e assim por diante
this.panelSul.add(this.button1Sul);
this.panelSul.add(this.button2Sul);
this.panelSul.add(this.button3Sul);
this.panelSul.add(this.button4Sul);
//insere os panels na janela, o BorderLayout indica a posicao podendo ser
//norte, sul, leste, oeste ou centro
this.add(this.panelNorte, BorderLayout.NORTH);
this.add(this.panelSul ,BorderLayout.SOUTH);
}
}
As primeiras linhas eu declaro os botoes e os painéis onde os botões serão adicionados.
Na função Init() eu inicializo todos os botões, a string no construtor será o text mostrado em cada botão. Cada Panel é inicializado com um tipo de layout. Feito isso adiciono cada botão em seu determinado Panel.
Pronto agora é só adicionar cada Panel em seu lugar no Frame.
Iniciamos então a nossa classe Janela no Main:
public class Main {
public static void main(String[] args) {
new Janela();
}
}
public static void main(String[] args) {
new Janela();
}
}
O resultado:

A tela não terá funcioinalidade pois não adicionei eventos, use a imaginação e até a próxima.
Nenhum comentário:
Postar um comentário