• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

[Java] Drag-And-Drop am Mac

Loooki

Beauty of Kent
Registriert
15.09.09
Beiträge
2.169
Hey,

ich habe da ein etwas schwer zu beschreibendes GUI Problem wenn ich in Java mit Drag and Drop arbeite...

Ich dafür das java.awt.dnd.* Package.

Mein Problem liegt nun darin das alles super funktioniert das ganze nur blöd aussieht, denn wenn ich etwas "droppe" dann landet das Objekt auch da wo es soll aber es geht ebenso wieder zurück zu der DragSource aber eben nur auf der GUI.

Ich weiß womit es zu tun haben könnte aber sicher bin ich mir nicht.
Ich vermute das es mit den java.awt.dnd.DnDConstants zusammenhäng. Denn wenn ich den DragGestureListener so zusammen bastel:

Code:
new DragSource().createDefaultDragGestureRecognizer(this, DnDConstants.ACTION_MOVE, this);

Ist es das gleiche als würde ich das das so schreiben:

Code:
new DragSource().createDefaultDragGestureRecognizer(this, DnDConstants.ACTION_COPY, this);

Würde ich aber DndConstants.ACTION_NONE benutzen geht kein Drag and Drop

Diese Methode wird aufgerufen wenn man das Object "dragt":

Code:
    @Override
    public void dragGestureRecognized(DragGestureEvent dge) {
        if (dge.getDragAction() == DnDConstants.ACTION_MOVE) {
            Cursor cursor = DragSource.DefaultMoveDrop;
            dge.startDrag(cursor, getResizedComponentImage(), new Point(18, 18), this, null);
        }
    }

Wenn ich den Cursor änder passiert ebenso nichts, könnte auch null bei startDrag pbergeben Ergebnis ist identisch

Java Version:

Bildschirmfoto 2011-09-27 um 23.54.59.png
 

Loooki

Beauty of Kent
Registriert
15.09.09
Beiträge
2.169
Ah hahaha Problem gelöst :D

Hab bei dem DropTarget vergessen dieses Schnippselchen aufzurufen:

Code:
    @Override
    public void drop(DropTargetDropEvent dtde) {
            dtde.dropComplete(true);
    }

Manchmal steht man echt auf dem Schlauch ^^ Warum natürlich die Konstaten keine Änderung bringen kann ich nicht sagen - Wohl einfach nicht unter Mac OS Lion unterstützt.