Preencher uma matriz com eventos do JButon. Isso é possivel?

Bom galera, estou com uma grande dúvida e enfrentando alguns problemas para poder elaborar um jogo da velha, utilizando Swing!

Vamos ao que nos interessam( haha) :
A intenção é criar um menu e uma tela para servir de tabuleiro.
Para esta tela que servirá como tabuleiro, pensei em adicionar um painel (configurar para gridlayout), e adicionar 9 JButtons.
Mas ao clicar nestes botões, vou ter como saber a posição do botão para preencher a matriz?

Conto com a ajuda da galera ai!

Estou começando com o Java!

posiciona os botões no grid em ordem numerica…
e quando for clickado execute uma cadeia de if’s para descobrir qual botao foi clickado…
aí por exemplo… o botao clickado foi o botao 5, entao atribua na matriz indice 5 ou vetor…

gostei da ideia vou fazer o programinha depois te mando… se quiser…

Todo listener é também uma classe. Você pode cria-lo e dar atributos a ele, como o número do botão que ele atende. Ou mesmo a coordenada do tabuleiro dele.

Veja um exemplo (essa classe seria implementado dentro da classe do JFrame de seu jogo da velha, que aqui chamo de velhaDialog):

[code]public class ButtonListener implements ActionListener {
private int x;
private int y;

public ButtonListener(int x, int y) {
this.x = x;
this.y = y;
}

@Override
public void actionPerformed(ActionEvent evt) {
if (tabuleiro[x][y] != CASA_VAZIA) {
JOptionPane.showMessageDialog(VelhaDialog.this, “Essa casa não está vazia!”);
tabuleiro[x][y] = jogadorAtual;
}
}[/code]

Na hora de criar os botões:

JPanel pnlVelha = new JPanel(new GridLayout(3,3)); for (int x = 0; x < 3; x++) { for (int y = 0; y < 3; y++) { JButton btnCasa = new JButton(); btnCasa.addActionListener(new ButtonListener(x, y)); } }

Evite cadeias de ifs. Além de representarem um mau-cheiro feio no código, deixam ele comprido e difícil de manter. Prefira sempre usar parâmetros, ou criar listeners diferentes para cada botão.

meu jogo de memória é com botoes… [url]

www.raghyjose.net/memoria.php[/url]

Bom de inicio usar o jButton não seria a melhor opção pois você necessitará por exemplo saber se o botão ja foi pressionado, se o que esta no botão é um “X” ou um “O”.

Acredito então como sugestão que você inicialmente deveria criar um componente que extenda de jButton ,implementar os métodos necessários ( Por Exemplo para saber por exemplo qual a posição daquele componente) e sobreescrever outros.

Depois criar um form com layout grid ou nulo. Adicionar o componente criado no form e voala num passe de mágica interface gráfica prontinha.