[RESOLVIDO] Erro com actionPerformed

5 respostas
M

Boa tarde.

Poderiam me ajudar com um erro?

Quando crio o método cria_botao() preciso adionar o ActionListener a cada um deles, mas está dando erro. Segue os dois métodos:

public void cria_botao() {
        GridLayout experimentLayout = new GridLayout(linha, coluna);
        pnPoltrona.setLayout(experimentLayout);

        for (l = 0; l < linha; l++) {
            for (c = 0; c < coluna; c++) {
                if (cont < total + 1) {
                    JButton botao = new JButton(cont + "");
                    botao.setSize(20, 20);
                    botao.setBackground(Color.green);
                    botao.addActionListener(this); //linha com erro
                    pnPoltrona.add(botao);
                    cont++;
                }
            }
        }
    }

    public void actionPerformed(ActionEvent e) {
        JButton bt = (JButton) e.getSource();
        bt.setBackground(Color.red);
        lugar = Integer.parseInt(bt.getText());
    }
Erro: method addActionListener in class AbstractButton cannot be applied to given types;

botao.addActionListener(this);

required: ActionListener

found: JeanusBig

reason: actual argument JeanusBig cannot be converted to ActionListener by method invocation conversion

5 Respostas

Ruttmann

Sua classe tem que implementar a interface ActionListener e apesar de você só ter postado metade do código, me parece que ela não está implementando a interface citada…

slashjvc

Cara, pelo o que eu entendi, você está passando um valor para o método addActionListener() que não coincide com seu parâmetro. Ele recebe um ActionListener, e você está passando uma auto-referência da sua classe, que pelo jeito não ela não implementa uma interface ActionListener.

Espero ter ajudado.

[]'s

Ruttmann

slashjvc:
Cara, pelo o que eu entendi, você está passando um valor para o método addActionListener() que não coincide com seu parâmetro. Ele recebe um ActionListener, e você está passando uma auto-referência da sua classe, que pelo não é um ActionListener.

Espero ter ajudado.

[]'s

Justamente isso.

Geralmente se coloca o this como argumento para o addActionListener(), porém só vai dar certo se você tiver implementado ActionListener nessa classe. Senão sem isso você vai estar passando como parâmetro para o método uma simples classe que não serve pra ele…

:roll:

M

Muito obrigado. Foi isso mesmo que estava acontecendo.

:smiley:

Ruttmann

mxczpiscioneri:
Muito obrigado. Foi isso mesmo que estava acontecendo.

:smiley:

Coloca um [RESOLVIDO] no titulo do topico então, ajuda bastante quem pesquisa atrás de respostas!

:wink:

Criado 28 de novembro de 2012
Ultima resposta 28 de nov. de 2012
Respostas 5
Participantes 3