Propriedade de um JButton

6 respostas
ZombieW

Olá a todos novamente! :slight_smile:

Venho até o fórum para saciar um dúvida: tem alguma propriedade do JButton que eu possa guardar algum comentário?

Se não existir, como posso criar uma?

Eis meu objetivo: Estou criando um Batalha Naval com Interface Gráfica, e tenho uma matriz 10x10 onde representa os campos de onde ficarão os barcos do CPU, como é obvio, não posso saber onde são colocados os barcos, portanto, na função que eu criei onde distribui os barcos pelo tabuleiro, gostaria de “setar” um comentário como “água” ou “barco1”. E quando eu atirasse, chamaria uma outra função que faria a verificação, se o comentário fosse “água”, o JButton ficaria vermelho e se acertasse ficaria verde.

Já adianto um obrigado a todos! :smiley:

6 Respostas

B

Você pode usar a propriedade de todo JComponent, cujo nome é “name”.

JButton btn = new JButton (......);

btn.setName ("agua");

...

if ("fogo". equals (btn.getName()) {
...
ZombieW

Muito obrigado mesmo, quebrei a cabeça ontem e não consegui achar uma propriedade digna de meu propósito!!

Já funcionou, agradeço muito!!

@EDIT

Aproveitando o tópico, ainda falando de propriedades do JButton…

“Setei” como por exemplo: setName(“Submarino”) o nome de um botão, e faço a verificação:

if(botaoMatriz1[i][j].getName().equals("Submarino")){ JOptionPane.showMessageDialog(null,"Afundou um Submarino!","Atenção!",JOptionPane.OK_OPTION); }else if(botaoMatriz1[i][j].getName().equals("Cruzador")){ JOptionPane.showMessageDialog(null,"Acertou um Cruzador!","Atenção!",JOptionPane.OK_OPTION); }else if(botaoMatriz1[i][j].getName().equals("Hidro-Avião")){ JOptionPane.showMessageDialog(null,"Acertou um Hidro-Avião!","Atenção!",JOptionPane.OK_OPTION); }else if(botaoMatriz1[i][j].getName().equals("Cargueiro")){ JOptionPane.showMessageDialog(null,"Acertou um Cargueiro!","Atenção!",JOptionPane.OK_OPTION); }else if(botaoMatriz1[i][j].getName().equals("Encouraçado")){ JOptionPane.showMessageDialog(null,"Acertou um Encouraçado!","Atenção!",JOptionPane.OK_OPTION); }else if(botaoMatriz1[i][j].getName().equals("Porta-Avião")){ JOptionPane.showMessageDialog(null,"Acertou um Porta-Avião!","Atenção!",JOptionPane.OK_OPTION); }else if(botaoMatriz1[i][j].getName().equals(null)){ JOptionPane.showMessageDialog(null,"Seu tiro foi na Água!","Atenção!",JOptionPane.OK_OPTION); }

Porém, mesmo estando null o texto de um botão (verifiquei pelo Debug), ao fazer essa comparação ele gera um exceção.

Quando não se é preenchido a propriedade setName() de um componente, ele fica em branco, nulo realmente?

E se for nulo, por que meu IF gera um erro?

W

Caro ZombieW,
qual o erro esta gerando?

W

Caro ZombieW,

Talvez não seja null e sim vazio “”, tem por um tratamento para esta situação tambem.

ZombieW

Então, eu cheguei a colocar mais alguns IF, um se for equals(null) e outro se for equals(""), mesmo assim ele não aponta erro, apenas quando deveria mostrar a mensagem é gerado uma exceção no compilador apontando para o IF todo…pois uma parte dele de certa forma está errado…

Eric_Yuzo

Se o método equals for invocado por uma string com valor null, será lançado um NullPointerException.

O mais correto seria:

if(botaoMatriz1[i][j].getName() == null) { //Faz alguma coisa... }
Para ver se está vazio, irá funcionar do jeito que está, mas existe o método isEmpty() que já faz isso pra você:

if(botaoMatriz1[i][j].getName().isEmpty()) { //Faz alguma coisa... }

Criado 8 de setembro de 2010
Ultima resposta 9 de set. de 2010
Respostas 6
Participantes 4