FlowLayout

6 respostas
B

Olá,

Tenho o seguinte código:

JFrame frame = new JFrame();
      Container cp = frame.getContentPane();
      cp.setLayout(new FlowLayout());

      for(i=0;i<25;++i) cp.add(new JButton("button "+i));

      frame.pack();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);

Quando cria os botoes eles ficam todos em linha reta...
Como faço para mudar sua posição?
Sei lá.. colocar 3 em cada coluna... =\

6 Respostas

WendersonLP

Olha a classe que você está utilizando (FlowLayout()) ela adiciona os botões da esquerda para à direita, e por isso que os botões estão em linha reta. Utilize a classe GridLayout(), ela posiciona os botões por linhas e colunas.
ex: Se você quiser adicionar 4 botões em forma quadrática, ou seja 2 linhas e 2 colunas, só é preciso você informar no constructor dessa classe que assim os botões vão ficar quandráticos.

JFrame frame = new JFrame("My GridLayout");
Container content = frame.getContentPane();
content.setLayout(new GridLayout(2, 2));

for (int i = 0; i < 4; i++)
      content.add(new JButton("Button[" + i + "]");
B

Obrigado…

Mas agora com isso me veio outra dúvida,

esses botões que eu crio… como é o nome deles? :S
Para falar especificamente de cada um?

WendersonLP

O nome é você que dá a cada um deles!
É isso?

B

mas eu estou criando por um for…
e adicionando na Grid…
então fica sempre ‘‘button’’ ;s

WendersonLP

É mesmo, o bom seria você criar um vetor de JButton que aí sim você poderia manipular por indice depois!

JButton[] buttons = new JButton[5];

for (int i = 0; i < 5; i++) {
     buttons[i] = new JButton("Button[" + i + "]");
     container.add(buttons[i]);
}
Marlon_Meneses
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Botoes extends JFrame{

    private JButton[] botoes = new JButton[6];

    public Botoes(){
        super("Teste de Botoes");
        this.setSize(300, 200);
        this.setLocationRelativeTo(this);
        componentes();
        this.setVisible(true);
    }

    public void componentes(){
        this.setLayout(new GridLayout(3, 3));
        for(int i = 0; i < botoes.length; i++){
            botoes[i] = new JButton("Botao " + (i+1));
            botoes[i].addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    acao(e);
                }
            });

            this.add(botoes[i]);
        }
    }

    public void acao(ActionEvent evt){
        JButton b = (JButton) evt.getSource();
        JOptionPane.showMessageDialog(this, b.getText() + " pressionado");
    }

    public static void main(String args[]){
        Botoes b = new Botoes();
        b.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
Criado 6 de novembro de 2009
Ultima resposta 7 de nov. de 2009
Respostas 6
Participantes 3