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(inti=0;i<25;i++){campo1.add(botao[i]=newJButton(""));intb=(int)(Math.random()*10);if(b==1){botao[i].addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){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? ^^}});}}
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.
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/