Me ajudem a encontrar o erro

1 resposta
B

Observem este trecho de programa

public class TabuleiroX extends JFrame{
  private JButton tab[][] = new JButton[17][17];
  private int linha;
  private int coluna;

  class TrataTabuleiro implements ActionListener{
            private int i, j;
            public TrataTabuleiro(int x1, int x2) {
                i = x1;
                j = x2;
            }
            public void actionPerformed(ActionEvent e){
                linha = i;
                coluna = j;
            }
       }

    void
	pega_pos()
	{
            for(int i=1;i<16;i++){
            	for(int j=1;j<16;j++){
                    tab[i][j].addActionListener(new TrataTabuleiro(i, j));
		}
            }
	}

  void
  clica_tabuleiro(){
            pega_pos();
            JOptionPane.showMessageDialog(null,"Linha: "+linha+"\nColuna: "+coluna,"Dados Coletados",JOptionPane.INFORMATION_MESSAGE);
  }
}

Porque o trecho acima nao funciona? Problema: o metodo cria_tabuleiro não deixa o usuario clicar no tabuleiro, melhor, dizendo, ele mostra a mensagem Linha =0 e Coluna =0 e depois nem funciona mais... valeu pela ajuda
flw

1 Resposta

BrunoBastosPJ

você esta tentando adicionar um Listener

tab[i][j].addActionListener(new TrataTabuleiro(i, j));

em uma referência que referencia null. Quando você cria um array qualquer bi ou uni direcional ele não instância o objeto. Ele apenas guarda as referências nesse array. para você ligar uma referência desse array a um objeto, basta usar o operador new!

tab[i][j] = new JButton();
tab[i][j].addActionListener(new TrataTabuleiro(i, j));
Criado 19 de setembro de 2006
Ultima resposta 20 de set. de 2006
Respostas 1
Participantes 2