Ich habe eine Klasse "Tracker", die JComponent erweitert.
Sie wird per add(this) zu einer JFrame erweiternden Klasse hinzugefügt.
Die Objekte der Klasse "Tracker" sollen per mouseDragged innerhalb der JFrame verschiebbar sein. Das funktioniert mit per MouseMotionListener auch ganz gut (siehe geposteten Konstruktur der Klasse "Tracker").
Mein Problem ist folgendes: Wenn ich ein "Tracker" Objekt verschiebe, dann "hängt" sich das Objekt an der linken oberen Ecke an den Mauszeiger. Es sollte allerdings seine Position relativ zum Mauszeiger nicht ändern. Gibt es da eine praktikable Möglichkeit? Meine bisherigen Versuche (z. B. aus "getParent().getMousePosition().x" ein "getParent().getMousePosition().x - getMousePosition().x" zu machen) haben sehr interessante Fehlermeldungen produziert.
Sie wird per add(this) zu einer JFrame erweiternden Klasse hinzugefügt.
Die Objekte der Klasse "Tracker" sollen per mouseDragged innerhalb der JFrame verschiebbar sein. Das funktioniert mit per MouseMotionListener auch ganz gut (siehe geposteten Konstruktur der Klasse "Tracker").
Mein Problem ist folgendes: Wenn ich ein "Tracker" Objekt verschiebe, dann "hängt" sich das Objekt an der linken oberen Ecke an den Mauszeiger. Es sollte allerdings seine Position relativ zum Mauszeiger nicht ändern. Gibt es da eine praktikable Möglichkeit? Meine bisherigen Versuche (z. B. aus "getParent().getMousePosition().x" ein "getParent().getMousePosition().x - getMousePosition().x" zu machen) haben sehr interessante Fehlermeldungen produziert.
Code:
public Tracker( JFrame arg_parent , String arg_label , int arg_sizeX, int arg_sizeY, int arg_locationX , int arg_locationY ) {
label = arg_label;
sizeX = arg_sizeX;
sizeY = arg_sizeY;
addMouseMotionListener( new MouseMotionAdapter() {
public void mouseDragged( MouseEvent e ) {
if( getParent().getMousePosition() != null ) {
setLocation( getParent().getMousePosition().x , getParent().getMousePosition().y );
}
}
});
arg_parent.add(this);
setBounds( arg_locationX , arg_locationY , arg_sizeX , arg_sizeY );
}