Šta je novo?

Java2D mouse handler

jddipqd

Čuven
Učlanjen(a)
17.10.2000
Poruke
2,621
Poena
725
Treba da napravim drag-and-drop funkcionalnost za Java2D oblik.
Implementirao sam interfejse MouseListener i MouseMotionListener i definisao mousePressed i mouseDragged.
(figura je definisana kao Rectangle2D.Double)
Kod:
public void mousePressed(MouseEvent e){
	if (figura.contains(e.getX(), e.getY())) {
		last_x = (int)figura.getX() - e.getX();
	        last_y = (int)figura.getY() - e.getY();
	}
	updateLocation(e);
}

public void mouseDragged(MouseEvent e) {
	updateLocation(e);
}

public void updateLocation(MouseEvent e) {
	if (figura.contains(e.getX(), e.getY())) {
		figura.setRect(last_x + e.getX(), last_y + e.getY(), 30 ,30);
	}
	repaint();
}

Ovo radi, ali ne radi dovoljno brzo. Ako miša pomeram polako pravougaonik ga lepo prati, ali ako se pomeri malo brže pravougaonik "ispadne", odnosno u jednom trenutku prestane da prati miša.

Kako da napravim handler koji neće zavisiti od brzine pomeranja miša?
 
Hmm, na brzaka da probam da pomognem. Nadodaj promenljivu containsFigura koja se updatejuje na mousePressed i mouseReleased. U updateLocation, tj. u mouseDragged stavi proveru na containsFigura i trebalo bi da radi, dakle verovatno te zeza provera u updateLocationu, sa dodatnom promenljivom ne bi trebalo da se izgubi figura. Ja sam na takav nacin radio, koliko se secam i nisam imao problema...
 
Hvala, proradilo je. cheers
 
Nazad
Vrh Dno