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?
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.
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.