Desabilitar um botão criado por contador depois de clicado? AJUDA!

7 respostas
Setsuki

[color=blue]Bom dia…
Seguinte…
Sou iniciante e estou tentando criar um joginho de batalha Naval…
Criei o quadro do jogo baseado em 25 botoes (5x5)…
Tudo certo
Ele funciona corretamente!.. Só que o problema é que não consigo achar uma forma de
depois de clicado e informado se é Agua ou se Acertou… ele bloqueie o botao…
tentei com

botao[i].setEnabled(false); não deu…
Ajuda! kkkk

Segue a parte do código^^

for(int i=0;i<25;i++)
{
campo1.add(botao[i] = new JButton(""));
int b = (int) (Math.random() * 10);
if(b==1)
{
botao[i].addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(null,"Parabéns! Você acertou!");
vezjogador.setText("Turno de: "+p2.getNome2());
//Aqui no caso queria colocar o botao[i].setEnabled(false); Mas não da! >.<"
//Existe outra maneira de eu fazer isso? ^^
}
});
}
}

Obrigado Agradeço desde Já^^

7 Respostas

CharlesAlves

Só pra esclarecer, no caso tu criou esse for para popular os campos do teu jogo e tlz, e em cada um deles vai ser criado um botão diferente, esse int b que tá sendo criado é que vai determinar se o local está livre ou se o jogador perde quando clicar. acho que até ai tá blz, mas quando tu tenta desabilitar o botão dentro do action, como é que ele vai saber qual botão desabilitar, já que este botão está dentro de um array e não foi passado em nenhum momento para ele?

acho que é isto que está dando errado.

ViniGodoy

Se você quer desabilitar o próprio botão que foi clicado:

public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(NomeDoSeuFrame.this,"Parabéns! Você acertou!"); vezjogador.setText("Turno de: "+p2.getNome2()); JButton btnClicado = (JButton)e.getSource(); btnClicado.setEnabled(false); }

Detalhe. O primeiro parâmetro de um JOptionPane deve ser a janela onde o optionpane abre, e não null. No caso, substitua NomeDoSeuFrame pelo nome da classe do JFrame da sua batalha naval.

ViniGodoy

Antes de postar, por favor, leia com atenção a descrição dos fóruns.

Como esse tópico é de Swing, vou move-lo para o fórum de interface gráfica. Vi também que você postou outra dúvida no fórum de notícias.
Bem, ela não era notícia portanto foi rejeitada e não será publicada no GUJ. Rebra-a no fórum certo.

Setsuki

Cara Funcionou diretinho …

MUUUUITO Obrigado!!! MESMO!!!

.<"

Agora vamos la

Você está criando um botão para por no lugar do outro botão e depois desabilita-lo?

Setsuki

[color=blue]Como assim Fórum Swing? O.o"

Malz

Comecei a usar esse fórum ontem…
não sei ainda bem como usar \o/

Vou prestar mais atenção

.<"
[/color]

ViniGodoy

Não tô criando nada.
O actionPerformed te entrega um evento, do tipo ActionEvent (chamado no seu método de e).

Esse evento contém o campo source, que contém uma referência para o componente que criou a ação (no caso, o botão).
Eu simplesmente peguei essa referência e deixei o botão que foi clicado desabilitado.

ViniGodoy

Setsuki:
Comecei a usar esse fórum ontem…
não sei ainda bem como usar \o/

Mais um motivo para você ler com atenção a descrição dos fóruns, as regras de conduta e aprender a fazer perguntas inteligentes. :wink:

Criado 22 de setembro de 2011
Ultima resposta 22 de set. de 2011
Respostas 7
Participantes 3