Ich habe auf meiner graphischen Oberfläche Elemente, die man mit der Mouse verschieben kann (so wie z.b. Fenster bei Windows). Das klappt auch soweit, aber nur, wenn ich die Mouse nicht zu schnell bewege! Das komische ist aber, selbst wenn ich sie schnell bewege klaptt es, solange ich das Objekt nach unter, links oder rechts verschiebe. Will ich es aber schnell nach oben schieben, bleibt es immer wieder hängen.
Hier ein bisschen Code:
Da der ganze Rest recht komplex geworden ist, es wäre also ziemlich schwierig, das als ein kleines eigenständiges Beispiel herauszulösen. Aber vielleicht sieht ja auch so jeamdn einen Fehler oder hat eine Idee?
Hier ein bisschen Code:
Java:
public class MoveObject extends Rectangle implements ...
{
private static final int NO_DRAG = -1;
private int dragOriginX;
private int dragOriginY;
private Rectangle titleBar;
// ...
// Verschieben starten
public void handleMousePressed( MouseEvent event )
{
if( contains( event.getX(), event.getY() ) )
{
if( titleBar.contains( event.getX(), event.getY() ) )
{
dragOriginX = event.getX();
dragOriginY = event.getY();
}
}
}
// Verschieben stoppen
public void handleMouseReleased( MouseEvent event )
{
if( contains( event.getX(), event.getY() ) )
{
if( dragOriginX!=NO_DRAG || dragOriginY!=NO_DRAG )
{
dragOriginX = NO_DRAG;
dragOriginY = NO_DRAG;
}
}
}
// Verschieben
public void handleMouseDragged( MouseEvent event )
{
if( contains( event.getX(), event.getY() ) )
{
if( dragOriginX!=NO_DRAG || dragOriginY!=NO_DRAG )
{
int deltaX = event.getX() - dragOriginX;
int deltaY = event.getY() - dragOriginY;
dragOriginX = event.getX();
dragOriginY = event.getY();
x += deltaX;
y += deltaY;
titleBar.x += deltaX;
titleBar.y += deltaY;
}
}
}
}