Mein Problem besteht darin, dass ich in einer JList gerne die Drag n Drop Funktion einbauen würde.
Ich würde es gerne mit einem MouseListener / MouseMotionListener machen, aber das will nicht funktionieren.
Bei mousePressed soll er alle selektierten Einträge kopieren, und bei mouseReleased die 'kopierten' Einträge erst löschen und dann das, was im Zwischenspeicher ist, per locationToIndex(evt.getPoint()); dort einfügen, wo der Mauszeiger ist.
Das Problem liegt darin, dass er beim 'drag' nicht erkennt, oder nicht erkennen will, dass ein mouseReleased Befehl ausgeführt wurde. Per Breakpoint setzen @ Debug hab ich das herausgefunden.
Bei mouseDragged(MouseEvent evt) funktioniert das erst recht nicht, weil er, sobald ich die Maus ziehe, den Befehl ausführt... Ein Befehl mouseDropped(ME evt) gibt es leider nicht.
Wie kann ich das machen?
DropTargetListener hab ich auch teils probiert, aber da kann ich locationToIndex nicht verwenden - er fügt dann immer ganz hinten ein...
Ich sehe zwei Möglichkeiten:
1.) Ich erstelle beim DropTargetListener ein eigenes MouseEvent - das müsste ich dann irgendwo im System herauslesen, wo die Maus grade ist, den Pixelwert mit dem des Fensters abziehen, und dann eben wieder per locationToIndex(evt.getPoint()); probieren. Ich habe aber keinerlei Ahnung, ob und wie das möglich ist...
2.) Ich mach irgendwas bei mouseReleased(ME evt) falsch. Bei der rechten Maustaste erkennt er es - bei der linken aber nicht... <.<
MfG!
Ich würde es gerne mit einem MouseListener / MouseMotionListener machen, aber das will nicht funktionieren.
Bei mousePressed soll er alle selektierten Einträge kopieren, und bei mouseReleased die 'kopierten' Einträge erst löschen und dann das, was im Zwischenspeicher ist, per locationToIndex(evt.getPoint()); dort einfügen, wo der Mauszeiger ist.
Das Problem liegt darin, dass er beim 'drag' nicht erkennt, oder nicht erkennen will, dass ein mouseReleased Befehl ausgeführt wurde. Per Breakpoint setzen @ Debug hab ich das herausgefunden.
Bei mouseDragged(MouseEvent evt) funktioniert das erst recht nicht, weil er, sobald ich die Maus ziehe, den Befehl ausführt... Ein Befehl mouseDropped(ME evt) gibt es leider nicht.
Wie kann ich das machen?
DropTargetListener hab ich auch teils probiert, aber da kann ich locationToIndex nicht verwenden - er fügt dann immer ganz hinten ein...
Ich sehe zwei Möglichkeiten:
1.) Ich erstelle beim DropTargetListener ein eigenes MouseEvent - das müsste ich dann irgendwo im System herauslesen, wo die Maus grade ist, den Pixelwert mit dem des Fensters abziehen, und dann eben wieder per locationToIndex(evt.getPoint()); probieren. Ich habe aber keinerlei Ahnung, ob und wie das möglich ist...
2.) Ich mach irgendwas bei mouseReleased(ME evt) falsch. Bei der rechten Maustaste erkennt er es - bei der linken aber nicht... <.<
MfG!