Drag-and-Drop-Funktionalität mit benutzerdefinierter Mausereignisbehandlung für JLabels
Sie möchten Drag-and-Drop-Funktionalität implementieren, indem Sie Mausereignisse auf einem JLabel überschreiben Array mit dem Namen „Thumbnails“. Sie haben jedoch festgestellt, dass der Ereignishandler „mouseReleased“ nicht ausgelöst wird, nachdem Drag & Drop im Ereignishandler „mousePressed“ definiert wurde.
Verstehen des Problems
In diesem speziellen Szenario Das Mausfreigabeereignis wird nicht registriert, da der Drag-and-Drop-Vorgang die Mausereignisse abfängt. Wenn Sie die exportAsDrag-Methode im MousePressed-Handler aufrufen, initiiert sie den Ziehvorgang und verbraucht nachfolgende Mausereignisse innerhalb desselben Vorgangs.
Lösung
Um dieses Problem zu beheben, müssen Sie kann die Drag-and-Drop-Logik in einen separaten MouseDragged-Ereignishandler verschieben. Dadurch wird sichergestellt, dass das Mausfreigabeereignis unabhängig behandelt werden kann.
Überarbeiteter Code:
<code class="java">Thumbnails[I_Loop].addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent me) { JComponent comp = (JComponent) me.getSource(); TransferHandler handler = comp.getTransferHandler(); } @Override public void mouseReleased(MouseEvent me) { System.out.println("here mouse released"); } }); Thumbnails[I_Loop].addMouseMotionListener(new MouseMotionAdapter() { @Override public void mouseDragged(MouseEvent me) { JComponent comp = (JComponent) me.getSource(); TransferHandler handler = comp.getTransferHandler(); handler.exportAsDrag(comp, me, TransferHandler.COPY); } });</code>
Durch die Trennung der Drag-and-Drop-Funktionalität in einen dedizierten MouseDragged-Handler können Sie kann das gewünschte Verhalten beibehalten und sicherstellen, dass Mausfreigabeereignisse für Ihr JLabel-Array korrekt behandelt werden.
Zusätzliche Hinweise:
Das obige ist der detaillierte Inhalt vonWie aktiviere ich die MouseRelease-Ereignisbehandlung nach Drag & Drop auf JLabel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!