FlowLayout

Olá,

Tenho o seguinte código:

[code]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);[/code]

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… =\

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 + "]");

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?

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

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

É 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]);
}

[code]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);
}

}[/code]