Eventos de mouse são tratados pelos métodos definidos em dois listeners distintos definidos em java.awt.event.
A interface MouseListener especifica os métodos para os eventos de maior destaque na interação do usuário com o mouse. A classe abstrata MouseAdapter oferece implementações vazias para todos esses métodos.
Esse exemplo ilustra a implementação de uma classe manipuladora para eventos de mouse que ecoa para a saída padrão a descrição do evento ocorrido. Esse código ilustra a associação desse manipulador com um componente. Nesse caso, o manipulador de eventos simplesmente envia mensagens para o console. Uma possível saída de uma execução seria:
java.awt.event.MouseEvent[MOUSE_ENTERED,(147,118),mods=0,clickCount=0] on frame0 na posicao java.awt.Point[x=147,y=118] java.awt.event.MouseEvent[MOUSE_PRESSED,(86,53),mods=16,clickCount=1] on frame0 na posicao java.awt.Point[x=86,y=53] java.awt.event.MouseEvent[MOUSE_RELEASED,(137,74),mods=16,clickCount=0] on frame0 na posicao java.awt.Point[x=137,y=74] java.awt.event.MouseEvent[MOUSE_EXITED,(203,20),mods=0,clickCount=0] on frame0 na posicao java.awt.Point[x=203,y=20] java.awt.event.MouseEvent[MOUSE_ENTERED,(228,24),mods=0,clickCount=0] on frame0 na posicao java.awt.Point[x=228,y=24]
Na descrição de eventos de mouse, indica-se a ação, a posição x,y, os modificadores associados ao evento e a quantidade de "cliques" associada ao evento. Nesse caso, houve uma seqüência de entrar em uma janela, pressionar o primeiro botão na posição x=165, y=137 uma vez e sair da janela. Essas informações podem ser obtidas isoladamente pela aplicação através dos métodos da classe MouseEvent.
A interface MouseMotionListener especifica métodos para manipular eventos de movimentação do mouse. A classe abstrata MouseMotionAdapter é uma adaptadora para esse listener.
Como acima, esse exemplo ilustra a implementação de uma classe manipuladora para esse tipo de eventos e esse código ilustra sua associação a um componente. Como no exemplo anterior, esse manipulador simplesmente envia a descrição do evento ocorrido para o console. Um segmento da saída associada a um breve "passeio" do mouse sobre a janela mostra as posições percorridas, inicialmente sem nenhum botão do mouse pressionado e, no segundo segmento, com o primeiro botão pressionado:
java.awt.event.MouseEvent[MOUSE_MOVED,(209,199),mods=0,clickCount=0] on frame0 na posicao java.awt.Point[x=209,y=199] java.awt.event.MouseEvent[MOUSE_MOVED,(219,187),mods=0,clickCount=0] on frame0 na posicao java.awt.Point[x=219,y=187] java.awt.event.MouseEvent[MOUSE_MOVED,(229,175),mods=0,clickCount=0] on frame0 na posicao java.awt.Point[x=229,y=175] java.awt.event.MouseEvent[MOUSE_MOVED,(241,165),mods=0,clickCount=0] on frame0 na posicao java.awt.Point[x=241,y=165] java.awt.event.MouseEvent[MOUSE_MOVED,(255,153),mods=0,clickCount=0] on frame0 na posicao java.awt.Point[x=255,y=153] [...] java.awt.event.MouseEvent[MOUSE_DRAGGED,(276,330),mods=16,clickCount=0] on frame0 na posicao java.awt.Point[x=276,y=330] java.awt.event.MouseEvent[MOUSE_DRAGGED,(276,329),mods=16,clickCount=0] on frame0 na posicao java.awt.Point[x=276,y=329] java.awt.event.MouseEvent[MOUSE_DRAGGED,(276,328),mods=16,clickCount=0] on frame0 na posicao java.awt.Point[x=276,y=328]
© Ivan L. M. Ricarte
DCA/FEEC/UNICAMP