Eventos

3 respostas
L

aí pessoal, me ajudem a entender uma coisa por favor.

Primeiro: tive que criar uma classe implementando o ActionListener para poder para poder utilizar do evento quando clicado no botão.

public class Biblioteca implements ActionListener {

jbMetal.addActionListener(this);

Mas o problema está sendo que eu quero colocar também eventos de mouse, e bem , assim realmente é complicado, pois achei dessa maneira:

final JList lista = new JList(arrayDeDados);
 MouseListener mouseListener = new MouseAdapter() {
     public void mouseClicked(MouseEvent event) {
         if (event.getClickCount() == 2) {
             int index = lista.locationToIndex(event.getPoint());
             System.out.println("Double clicked on Item " + index);
          }
     }
 };
 lista.addMouseListener(mouseListener);

Mas ai eu teria que incrementar o método do mouseEvent já na declaração do mouseListener.

Teria como fazer o ActionListener e o MouseListener sem ter de fazer o implements? E como ficaria no addActionListener()?

Obrigado.

3 Respostas

J

Isso?

componente.addMouseListener(new MouseAdapter(){
   public void mouseClicked(MouseEvent mevt){

   }
});

componente.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent evt){

   }
});

Só como informação, esse recurso chama-se classes anonimas, procure sobre isso, é interessante, não é especifico de Listeners, só não saia usando pra tudo... :wink:

L

Olha, sim, sei como é que vc quis dizer, mas não é bem assim que eu quero (se tem como eu quero)

Sei que dessa forma não tem como, mas é +- assim, e me fale porque assim tmb não pode

ActionListener acao = new ActionListener();

componente.addActionListener(acao);

public void actionPerformed(ActionEvent evt){

}

Se puder me explicar isso eu agradeço.

J

Você não pode instanciar uma Interface nem uma classe Abstrata, você tem que implementar o metodo de ActionListener…

Ou você implementa a interface na propria classe como você já tinha feito antes, ou você cria uma classe interna pra isso, como eu fiz no exemplo.

Dê uma olhada melhor em orientação a objetos.

Criado 19 de julho de 2006
Ultima resposta 20 de jul. de 2006
Respostas 3
Participantes 2