Baixar o arquivo

Propaganda
AULA TEÓRICA 14
Tema 11. Tratamento de eventos de mouse
1
1
Tratamento de eventos de mouse
Os eventos de mouse podem ser capturados por qualquer componente GUI que se
derive de java.awt.Component.
Alguns dos tipos de eventos mais comuns (inclusive de janela):
Métodos
Interface
Chamada
MouseListener
mousePressed(MouseEvent ev) Quando um botão do rato é pressionado
sobre um componente
mouseClicked(MouseEvent ev) Quando um botão do rato é pressionado e é
liberado
mouseEntered(MouseEvent ev) Quando o rato entra numa janela
mouseExited(MouseEvent ev) Quando o rato sai de uma janela
MouseMotionListener mouseDragged(MouseEvent ev) Quando o rato é deslocado com o botão
windowClosed()
premido
Quando o rato é deslocado sem que o botão
esteja premido
Quando a janela acabou de ser fechada
windowOpened()
Quando a janela é aberta
WindowActivated()
Quando a janela é activada
WindowDeActivated()
Quando a janela é desactivada
mouseMoved(MouseEvent ev)
WindowListener
2
O processamento destes eventos é semelhante ao que foi descrito
anteriormente, sendo necessário associar a cada componente um processador
de evento adequado e descrever o comportamento da aplicação como
resposta a cada um dos métodos definidos nesse processador. De referir que
nada impede que sejam associados vários processadores de eventos a um
mesmo componente.
Os métodos das interfaces MouseListener e MouseMotionListener são
resumidos no exemplo a seguir.
Cada um dos métodos de tratamento de eventos do mouse recebe um objecto
MouseEvent como argumento. O objecto MouseEvent contém as
informações sobre o evento que ocorreu, incluindo as coordenadas x e y da
posição em que o evento ocorreu.
A classe da aplicação implementa as duas interfaces de modo a poder esperar
seus próprios eventos de mouse. Observe que todos os sete métodos dessas
duas interfaces devem ser definidos pelo programador quando uma classe
implementa as duas interfaces.
3
import
import
import
public
java.awt.*;
java.awt.event.*;
javax.swing.*;
class MouseTracker extends JFrame implements
MouseListener,MouseMotionListener
{ private JLabel statusBar;
public MouseTracker()
{ super("Demonstrating Mouse Events");
statusBar = new JLabel();
getContentPane().add(statusBar, BorderLayout.SOUTH);
addMouseListener(this);
addMouseMotionListener(this);
setSize(275, 100);
setVisible(true);
}
4
//implementação de métodos do MouseListener, processa o evento quando mouse
// é largado immediatamente apos de ser pressionado
public void mouseClicked(MouseEvent event )
{ statusBar.setText("Clicked at ["+event.getX()+", "+
event.getY()+"]" ); }
//processa o evento quando mouse é pressionado
public void mousePressed( MouseEvent event )
{ statusBar.setText( "Pressed at ["+event.getX()+", "+
event.getY()+"]"); }
//processa o evento quando mouse é largado apos de ser arrastado
public void mouseReleased(MouseEvent event )
{ statusBar.setText("Released at ["+event.getX()+", " +
event.getY() + "]" ); }
//processa o evento quando mouse entra em uma área
public void mouseEntered(MouseEvent event )
{ JOptionPane.showMessageDialog(null, "Mouse in window" ); }
//processa o evento quando mouse entra sai de uma área
public void mouseExited(MouseEvent event)
{ statusBar.setText("Mouse outside window"); }
5
// implementação de métodos do MouseMotionListener
//processa o evento quando mouse é arrastado com o botão pressionado
public void mouseDragged( MouseEvent event )
{ statusBar.setText("Dragged at [" +event.getX()+", "+
event.getY()+"]" ); }
//processa o evento quando mouse é movimentado
public void mouseMoved( MouseEvent event )
{ statusBar.setText("Moved at [" + event.getX()+", "+
event.getY()+"]"); }
public static void main(String args[] )
{ MouseTracker application = new MouseTracker();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
A caixa de diálogo de mensagem aparece quando o mouse se move para dentro da
janela.
6
Pop-up Menu (em resposta ao clique com botão direito)
The JPopupMenu Class
menus não estão ligados a um bara de menu;
•  Estes
•  São menus livres que estão associados à um componente;
• 
• 
Eles são activados por um evento pop-up trigger que ocorre quando o
mouse está sobre o componente .
Em AWT e Swing, este trigger é tipicamente um evento do mouse. Uma
vez activado, o utlizador pode interagir com o menu normalmente.
Exemplo do método processMouseEvent() que activa um
pop-up menu depois de receber o trigger certo:
public void processMouseEvent(MouseEvent e) {
if (e.isPopupTrigger( )) {
popup.show(this, e.getX( ), e.getY( )); }
else {
super.processMouseEvent(e); }
7
Referência bibliográfica:
António José Mendes; Maria José Marcelino.
“Fundamentos de programação em Java 2”. FCA. 2002.
Elliot Koffman; Ursula Wolz.
“Problem Solving with Java”. 1999.
F. Mário Martins;
“Programação Orientada aos objectos em Java 2”, FCA, 2000,
John Lewis, William Loftus;
“Java Software Solutions: foundation of program design”, 2nd edition, Addision-Wesley
John R. Hubbard.
“Theory and problems of programming with Java”. Schaum’s Outline series. McGraw-Hill.
H. Deitel; P. Deitel.
“Java, como programar”. 4 edição. 2003. Bookman.
Rui Rossi dos Santos.
“Programando em Java 2– Teoria e aplicações”. Axcel Books. 2004
8
Download