Duvida de evento

4 respostas
O

olá…vo aproveita bem esse topico pra não criar outros…hehe

eu ja consegui intende o conceito de evento do java…mais to com umas duvidas ainda…

o pq e pra q serve a classe MouseEvent ou ActionEvent que são passadas por parametro “ex: public mousePressed(EventMouse e)”?? seria essas classes um meio de sber as informações do evento que ocorreu ou estou enganado??

outra coisa…

eu consegui criar eventos do mouse usando a interface MouseListener e tb extendendo a classe mouseAdapter, porem eu não consigo remover os eventos quando eu uso mouseAdapter, eu to fazendo isso:

objeto.removeMouseListener(classeDeEventoDoMouse);

só q da problema dizendo q não eh do tipo mouseListener…qual seria o pau?? i pq não da esse problema quando se cria o evento soh quando remove…?

i agora uma curiosidade…todas essas classes q a Sun criou de controle de eventos são 100% feitas no proprio java ou elas tem uma mãozinha de C por baixo…??

t++ galera…

4 Respostas

S

“ozzyjunior”:
o pq e pra q serve a classe MouseEvent ou ActionEvent que são passadas por parametro “ex: public mousePressed(EventMouse e)”?? seria essas classes um meio de sber as informações do evento que ocorreu ou estou enganado??

Sim. Serve pra saber qual botão do mouse foi clicado, onde o clique aconteceu, etc…

Acho que só você mostrando o código pra poder ajudar.

O swing é todo feito em java, mas os eventos fazem parte do java.awt. Então eu acho que devem usar código nativo sim.

O

vlw pela resposta cara...agora ta ai a duvida q fico faltando sobre não remover o evento...

class eventodomouse {
    JFrame frame = new JFrame();
    JButton button = new JButton();
    public static void main (String arg[]) {
       eventodomouse EM = new eventodomouse();
    }
    
    public void eventodomouse() {
       eventos e = new eventos();
       
       //Adiciono o evento
       button.addMouseListener(e);

       //Removo o evento (isso não tem logina, mas eh pra exemplifica)
       button.removeMouseListener(e);

       frame.getContentPane().add(button);
       frame.pack();
       frame.setSize(200,200);
       frame.setVisible(true);
    }
    class eventos extends MouseAdapter {
       public void mousePressed(MouseEvent e) {
           System.out.println("Clicou no botão");
       }
    }
}

bom, esse eh um exemplo q fiz pra ilustra o problema...agora, caso na subclasse "eventos" ao inves de EXTENDER a classe mouseAdapter eu tivesse implementando a interface mouseListener ai sim funcionava...mas ai eh complicado pois essa interface exite todos os metodo da mesma, i não seria tão viavel usa-la pois soh tenho UM evento que preciso...

i outra coisa...

quando eu crio uma CLASSE ANONIMA para o evento, como faço para remove-lo tb?? ou não existe essa possibilidade

ex:

button.addMouseListener (
    new MouseAdapter () { 
        public void mousePressed(MouseEvent e) {
           System.out.println("Clicou no mouse com uma classe anonima");
        }
    }
);

i outra coisa..srs..

qual a diferença da classe button.addActionListener, pergunto isso pois ela tb tem o evento do click do mouse quando se cria ela...vlw ae galera, to aprendento pacas nesse forum...

S

Rapaz, sua classe compilou numa boa.

Classes anônimas não podem ser re-aproveitadas.

E ActionListener é pra ação. Quando o botão for clicado, ou o cara apertar enter ou espaço com o foco nele.
MouseListener é pra eventos de mouse. Quando o botão é clicado (dá pra saber qual foi o botão), quando o mouse passa por ele, etc…

O

putz…vo da uma analizada melhor no codigo pra ve o pq não ta funcionando…na vdd esse foi um exemplo q dei pois axei q era esse o problema, mas como não eh …

muito obrigado ae…

Criado 4 de julho de 2006
Ultima resposta 4 de jul. de 2006
Respostas 4
Participantes 2