/ / Drag & Drop mit Swing - Java, Swing

Drag & Drop mit Swing - Java, Swing

Ich brauche Hilfe. Kann ich Drag & Drop simulieren, ohne eine Komponente zu registrieren?
Z.B. Ich klicke den Mousekey irgendwo im Fenster an und halte den Mousekey gedrückt. In diesem Moment möchte ich einen erstellen oder simulieren DragSourceEvent programmgesteuert mit Java.

Ist das möglich?

Aktualisieren:

Was Bobs Antwort betrifft, so kann ich zumindest einen Listener für das Drag & Drop erstellen:

DragSource dragSource = new DragSource();
DragGestureListener listener = new DragGestureListener() {
public void dragGestureRecognized(DragGestureEvent event) {
event.startDrag (null, strSel) ;
...
}
}

listener.dragGestureRecognized(new DragGestureEvent(
new DragGestureRecognizer(dragSource, component) {

}, DnDConstants.ACTION_COPY, new Point(0,0), events ));

aber leider bekomme ich diese ausnahme:

java.lang.IllegalArgumentException: Quellaktionen bei java.awt.dnd.DragSourceContext. (DragSourceContext.java:169) beim java.awt.dnd.DragSource.createDragSourceContext (DragSource.java:454) beim java.awt.dnd.DragSource.startDrag (DragSource.java:293) beim java.awt.dnd.DragSource.startDrag (DragSource.java:403) beim java.awt.dnd.DragGestureEvent.startDrag (DragGestureEvent.java:203)

irgendwelche Vorschläge?

Antworten:

1 für die Antwort № 1

Die Frage, die Sie gestellt haben: Ich habe es nicht ausprobiert, aber theoretisch sollte man das auch tunSie können das Event-Objekt erstellen und die Swing-Ereigniswarteschlange von einer der Systemklassen abrufen. Ohne gültige Komponente können jedoch Probleme auftreten, wenn Methoden versuchen, mit dem Ereignis zu arbeiten.

Was du wahrscheinlich gemeint hast: Ereignisse für ein Standardfenster registrieren - Siesollte in der Lage sein, Drag & Drop-Unterstützung für ein leeres JPanel oder JFrame einzurichten, aber es ist einiges an Hacking erforderlich. Drag & Drop ist eine Schwierigkeit, mit der auf dieser Ebene gearbeitet werden kann, wenn sie nicht eingebaut ist. Ich schlage vor, etwas wie ein Unsichtbares zu verwenden Komponente oder etwas stattdessen.