Erro nos Eventos

7 respostas
R

Pessal,
Estou aprendendo em Java ( +1 ), peguei um exemplo sobre eventos e estou com dificuldades pois quando compilo, me aparece a mensagem:

acao2:java:5: acao2 should be declared abstract; it does not define actionPerformed(java.awt.event.ActionEvent) in acao2
public class acao2 extends JFrame implements ActionListenter {

a classe :

import java.awt.* ;

import javax.swing.* ;

import java.awt.event.* ;
public class acao2 extends JFrame implements ActionListener {

GridLayout layout = new GridLayout( 2,1 ) ;

JLabel label = new JLabel( Teste ) ;

JButton botao = new JButton( Clique-me ) ;
public void acao2() {

setDefaultCloseOperation( this.EXIT_ON_CLOSE ) ;

setTitle( Teste 02 ) ;

getContentPane().setLayout( layout ) ;

getContentPane().add( botao ) ;

getContentPane().add( label ) ;

pack() ;

setVisible(true) ;

}

public void ActionPerfomed( ActionEvent e ) {
}

public static void main( String args[] ) {

acao2 n = new acao2() ;

n.acao2() ;

}

}

Agradeço muiiitooo a quem puder me ajudar !

7 Respostas

Rafael_Afonso

Pelo que percebi, o seu método actcionPerformed(…) está começando com letra Maiúscula:

public void ActionPerfomed( ActionEvent e ) {}

Este método não existe, portanto você não está sobrepondo o método actionPerfomed(…) do JFrame. O correto seria:

public void actionPerfomed( ActionEvent e ) {} // Começa com minúscula

O Java é case-sensitive. Ou seja, ele diferencia atributos (ou variáveis, ou métodos) com mesmo nome mas com tipo diferente. Ex: atributo, Atributo, ATRIBUTO, etc. Se fosse no Pascal ou no VB (acho) isso não faria a menor diferença, mas no Java faz.

Espero que isso funcione,

luiz_ross
Não entendi muito bem o que vc quis fazer com o evento do seu código, por favor explique-se melhor mas pelo que eu vi vc está usando de maneira errada. O código roda mas dessa maneira..
import java.awt.* ; 
import javax.swing.* ; 
import java.awt.event.* ; 

public class acao2 extends JFrame implements ActionListener { 
GridLayout layout; 
JLabel label; 
JButton botao;

public acao2() { 
layout = new GridLayout( 2,1 ) ;
label = new JLabel( "Teste" ) ;
botao = new JButton( "Clique-me" ) ; 
setDefaultCloseOperation( this.EXIT_ON_CLOSE ) ; 
setTitle( "Teste 02" ) ; 
getContentPane().setLayout( layout ) ; 
getContentPane().add( botao ) ; 
getContentPane().add( label ) ; 
pack() ; 
setVisible(true) ; 
} 



public static void main( String args[] ) { 

acao2 n = new acao2() ; 



} 

}
R

Ainda não funciona. Quanto a dica do Rafael, deixei em minuscula mas continuou o erro. Quanto ao exemplo do Luis, copiei (CTRL+C) o seu exemplo, mas dá o mesmo erro.

Por favor, não desanimem ! Ajudem-me !

Obrigado !

luiz_ross

O Renam me desculpa, eu coloquei o código meio errado pra vc, tem que tirar o implements ActionListener do código.Agora põe pra compilar de novo que da certo, blz!!!

Rafael_Afonso

Novo Erro de Escrita.
No seu código temos:

public void ActionPerfomed( ActionEvent e ) {}

Copiei seu código original, modifiquei da forma que sugeri e deu o seu erro. Fui até a Api do Java referente a
ActionListener
. Copiei o único método desta interfacce e colei no seu código. Assim ficou:

public void actionPerformed( ActionEvent e ) {}

E daí compilou e rodou corretamente.
O problema foi o seguinte: Enquanto você digitou ActionPerfomed o correto seria actionPerformed. Repare que o a é minúsculo e que há um segundo r depois do segundo o.
Este erro de grafia é muito comum.

Grato,

Rafael_Afonso

Outra coisa: quando uma classe implementa uma interface, ela deve implementar todos os métodos definidos por esta interface. Por isso a sugestão do Renan não funcionou: Ele não implementou o método actionPerformed().

R

Funcionou perfeitamente !
Era isto mesmo. grafia. Quanto a implementação, bem não posso discutir nada sobre, pois ainda não entendo direito o conceito de objetos. ( Sou programador clarion e o mesmo é pobrissimo sobre objetos ).
Mas, vou estudá-los e assim aprimorar o conhecimento sobre esta ótima linguagem.

Novamente, agradeço a paciência de vocês !

Criado 7 de março de 2003
Ultima resposta 7 de mar. de 2003
Respostas 7
Participantes 3