Mouse



Utilizarea mouse-ului

In Java, mi[carea sau ac]ionarea unui buton al mouse-ului pe suprafa]a unei componente genereaz\ evenimente de un tip special. Spre deosebire de multe alte limbaje de programare, in Java nu se face distinc]ie intre butoanele mouse-ului, aceasta pentru a realiza independen]a de platform\ [i de num\rul butoanelor mouse-ului recunoscute , care poate fi diferit de la o platform\ la alta. Interceptarea [i utilizarea acestor evenimente se realizeaz\ prin intermediul clasei MouseEvent

 

Clasa MouseEvent

Dintre metodele mai des utilizate amintim :

int getClickCount( ) 52547kcq37iqg2g



Returneaz\ de cate ori a fost ac]ionat un buton al mouse-ului

java.awt.Point getPoint( )

Returneaz\ coordonatele punctului de pe suprafa]a componentei la care se g\se[te

mouse-ul cq547k2537iqqg

boolean isPopupTrigger( )

Specific\ dac\ evenimentul este asociat cu apari]ia unui menu popup

int getX( )

int getY( )

In mod uzual, pentru ca evenimente referitoare la mouse generate de o component\ s\ fie interceptate, trebuie s\ existe un obiect receptor, care s\ se inregistreze ca listener la componenta care genereaz\ evenimentele. Un astfel de obiect receptor trebuie s\ implementeze interfe]ele :

  • MouseListener

  • MouseMotionListener

De asemenea, obiectul receptor trebuie s\ se inregistreze la componenta produc\toare de evenimente prin metodele :

  • addMouseListener(MouseListener I)

  • addMouseMotionListener(MouseMotionListener I)

Defini]ia interfe]ei MouseListener

public interface MouseListener extends java.util.EventListener

{

// Metode

public void mouseClicked( java.awt.event.MouseEvent e );

public void mousePressed( java.awt.event.MouseEvent e );

public void mouseReleased( java.awt.event.MouseEvent e );

public void mouseEntered( java.awt.event.MouseEvent e );

public void mouseExited( java.awt.event.MouseEvent e );

}

Defini]ia interfe]ei MouseMotionListener

 

public interface MouseMotionListener extends java.util.EventListener

{

// Metode

public void mouseDragged( java.awt.event.MouseEvent e );

public void mouseMoved( java.awt.event.MouseEvent e );

}

A[adar, structura general\ a unei componente care genereaz\ evenimente referitoare la mouse care necesit\ prelucrare este :

class Componenta {

//...

Receptor r = new Receptor();

this.addMouseListener(r);

this.addMouseMotionListener(r);

//...

}

class Receptor implements MouseListener, MouseMotionListener {

//...

//Metodele interfetei MouseListener

//...

//Metodele interfetei MouseMotionListener

//...

}

Exemplu :

  • la ap\sarea mouse-ului : deseneaz\ un cerc

  • la eliberare : deseneaz\ un p\trat

  • la executarea opera]iei drag : deseneaz\ traiectoria mouse-ului

import java.awt.*;

import java.awt.event.*;

public class TestMouse {

public static void main(String args[]) {

Fereastra f = new Fereastra("Test Mouse");

Desen d = new Desen();

d.setSize(new Dimension(400, 400));

f.add(d);

f.pack();

f.show();

}

}

class Desen extends Canvas implements MouseListener, MouseMotionListener {

Point prev;

public Desen() {

this.addMouseListener(this);

this.addMouseMotionListener(this);

}

public void paint(Graphics g) {}

//metodele interfetei MouseListener

public void mouseClicked(MouseEvent e) {}

public void mousePressed(MouseEvent e) {

prev = e.getPoint();

int x = (e.getPoint()).x;

int y = (e.getPoint()).y;

Graphics g = getGraphics();

g.drawOval(x-5, y-5, 10, 10);

setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));

}

public void mouseReleased(MouseEvent e) {

int x = (e.getPoint()).x;

int y = (e.getPoint()).y;

Graphics g = getGraphics();

g.drawRect(x-5, y-5, 10, 10); setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));

}

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

//metodele interefetei MouseMotionListener

public void mouseDragged(MouseEvent e) {

int x1 = prev.x;

int y1 = prev.y;

int x2 = (e.getPoint()).x;

int y2 = (e.getPoint()).y;

prev = e.getPoint();

Graphics g = getGraphics();

g.drawLine(x1, y1, x2, y2);

}

public void mouseMoved(MouseEvent e) {}

}

class Fereastra extends Frame implements WindowListener {

public Fereastra(String titlu) {

super(titlu);

this.addWindowListener(this);

}

//metodele interfetei WindowListener

public void windowOpened(WindowEvent e) {}

public void windowClosing(WindowEvent e) {System.exit(0);}

public void windowClosed(WindowEvent e) {}

public void windowDeiconified(WindowEvent e) {}

public void windowIconified(WindowEvent e) {}

public void windowActivated(WindowEvent e) {}

public void windowDeactivated(WindowEvent e) {}

}