Wie erkennt man die META-Taste während Drag & Drop auf OSX?

8

Es gibt einen Fehler in Java 6/7 auf OSX, bei dem während Drag & Drop-Operationen der Schlüssel META (CMD) ignoriert wird. (Strg-Taste funktioniert gut unter Windows, Strg-Taste ignoriert auch auf OSX) Ich muss wirklich funktionieren.

Siehe: Java Drag und Drop auf OS X-Berichte Verschieben statt Kopieren

Ich habe versucht, dem KeyboardFocusManager einen KeyEventDispatcher-Listener hinzuzufügen, der aber nicht während einer Drag-Operation aufgerufen wird.

Auch wird die processKeyEvent () -Methode des übergeordneten JPanels niemals aufgerufen.

Also, gibt es einen Ort, an dem ich einen Haken setzen kann, um META-Tasten zu drücken?

    
CasaDelGato 27.07.2016, 19:52
quelle

2 Antworten

1

Im DragGestureEvent können Sie die Modifikatoren erhalten. e.getTriggerEvent().getModifiersEx() javadocs state:

  

Erweiterte Modifikatoren stellen den Status aller modalen Schlüssel dar, z. B. ALT, STRG, META und die Maustasten direkt nach dem Auftreten des Ereignisses.

Dieser Code funktionierte für mich unter OSX:

%Vor%     
Jayfray 02.08.2016 21:01
quelle
0

Also, mit ein paar Experimenten habe ich eine Art Workaround gefunden. Während keiner der Maus-Listener den Befehlstasten- oder Strg-Tastenmodifikator erhält, wirkt sich die Strg-Taste auf die DropAction für viele der DragNDrop-Klassen aus.

Eine Sache, die uns aufgefallen ist, war, dass es funktionieren würde, wenn Sie die Kontrolltaste gedrückt haben, nachdem Sie etwas über das Abwurfziel gezogen haben. Um dem Benutzer mehr Feedback zu geben, konnte ich meinen DragSourceListener und den DragSourceMotionListener ändern, um das Drag-Symbol zu aktualisieren. Es ist unzuverlässig auf dem Mac, da der Mac den Drag-Cursor häufig auf den Standard zurücksetzt. Aber zumindest kann der Benutzer eine Drag-Copy-Operation ausführen, die etwas nicht standardgemäß ist und eine inkonsistente Icon-Rückmeldung aufweist.

    
CasaDelGato 04.08.2016 19:10
quelle