1 / 15

Handling Mouse Events

Handling Mouse Events. Event-Driven Programming Approccio standard per programmare GUI In contrapposizione al polling offre: Maggiore flessibilità Minor spreco di risorse In Java . Handling Mouse Events.

Télécharger la présentation

Handling Mouse Events

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Handling Mouse Events Event-Driven Programming Approccio standard per programmare GUI In contrapposizione al polling offre: • Maggiore flessibilità • Minor spreco di risorse In Java 

  2. Handling Mouse Events Un oggetto può essere notificato dell’occorrenza di un evento registrandosi come event listener implementando l’apposita interfaccia. Ogni Swing Component è un event source e può avere più EventListener in ascolto L’occorrenza di un evento chiama la rispettivo metodo dell’EventListener. (es. mouse clicked  MouseListener.mouseClicked() )

  3. Handling Mouse Events MouseEvents (il puntatore entra o esce da un componente, l’utente preme un bottone) MouseListener (Eventi che richiedono il tracciamento del movimento del cursore) MouseMotionListener (MouseWheelEvents  MouseWheelListener)

  4. Handling Mouse Events

  5. Handling Mouse Events

  6. Handling Mouse Events Implementando le Interfacce MouseListener e MouseMotionListener si è costretti ad implementare tutti i metodi Spesso ci interessano solo alcuni eventi (pochi metodi) Classi Adapter(estendono le interfacce e danno una imlementazione di default dei metodi) MouseAdapter mplements MouseListener MouseMotionAdapter implements MouseMotionListener MouseInputadapter implements MouseInputListener and MouseMotionListener

  7. Handling Mouse Events Esempio: MouseXY

  8. Handling Mouse Events Esempio: MouseXY class MouseXY extends Frame implements WindowListener, MouseListener { public MouseXY(String text) { super(text); addWindowListener(this); addMouseListener(this); } publicvoid mouseClicked(MouseEvent event) {} publicvoid mouseEntered(MouseEvent event) {} publicvoid mouseExited(MouseEvent event) {} publicvoid mouseReleased(MouseEvent event) {} …….

  9. Handling Mouse Events Esempio: MouseXY publicvoid mousePressed(MouseEvent event) { int xCoord = event.getX(); int yCoord = event.getY(); Graphics g = getGraphics(); g.drawString("+ [" + String.valueOf(xCoord) + "," + String.valueOf(yCoord) + "]", xCoord,yCoord); }

  10. Handling Mouse Events Esempio: MouseXY publicvoid windowClosed(WindowEvent event) {} publicvoid windowDeiconified(WindowEvent event) {} publicvoid windowIconified(WindowEvent event) {} publicvoid windowActivated(WindowEvent event) {} publicvoid windowDeactivated(WindowEvent event) {} publicvoid windowOpened(WindowEvent event) {} publicvoid windowClosing(WindowEvent event) { System.exit(0); } publicstaticvoid main(String[] args) { MouseXY screen = new MouseXY("Mouse example"); screen.setSize(400,300); screen.setVisible(true); } }

  11. Handling Mouse Events Esempio: MousePainter

  12. Handling Mouse Events Esempio: MousePainter publicclass MousePainter extends JFrame{ privateint xValue = -10, yValue = -10; boolean rubber = false; Label label; Button toolButton; public MousePainter () { super("Mouse Painter Example"); label = new Label("Drag mouse to paint"); toolButton = new Button("Use Rubber"); toolButton.addMouseListener( new MouseInputAdapter () { publicvoid mouseClicked(MouseEvent e){ if (e.getButton() == 1) { String newLabel = rubber ? "Use rubber" : "Use pen"; toolButton.setLabel(newLabel); rubber = rubber ? false : true; } } } );

  13. Handling Mouse Events Esempio: MousePainter getContentPane().add(toolButton,BorderLayout.NORTH); getContentPane().add(label,BorderLayout.SOUTH); setSize(350,350); addMouseMotionListener ( new MouseMotionAdapter () { publicvoid mouseDragged(MouseEvent e){ xValue = e.getX(); yValue = e.getY(); repaint(); } } ); show(); };

  14. Handling Mouse Events Esempio: MousePainter publicvoid paint(Graphics g) { if (rubber) { g.clearRect(xValue,yValue,15,15); } else { g.fillOval(xValue,yValue,3,3); }; }; publicstaticvoid main(String[] args){ MousePainter app = new MousePainter(); app.addWindowListener( new WindowAdapter() { publicvoid windowClosing(WindowEvent e){ System.exit(0); } } ); } }

  15. Handling Mouse Events Esempio: MousePainter addMouseListener ( new MouseInputAdapter () { publicvoid mouseDragged(MouseEvent e){ xValue = e.getX(); yValue = e.getY(); repaint(); } publicvoid mouseClicked(MouseEvent e){ if (e.getComponent().equals(toolButton)) { String newLabel = rubber ? "Use rubber" : "Use pen"; toolButton.setLabel(newLabel); rubber = rubber ? false : true; } } } );

More Related