Heim > Java > javaLernprogramm > Wie aktiviere ich die MouseRelease-Ereignisbehandlung nach Drag & Drop auf JLabel?

Wie aktiviere ich die MouseRelease-Ereignisbehandlung nach Drag & Drop auf JLabel?

Barbara Streisand
Freigeben: 2024-10-23 22:07:30
Original
645 Leute haben es durchsucht

How to Enable MouseRelease Event Handling After Drag and Drop on JLabel?

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>
Nach dem Login kopieren

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:

  • Erwägen Sie die Verwendung einer übertragbaren Implementierung zum Definieren die während Drag-and-Drop-Vorgängen übertragenen Daten.
  • Entdecken Sie zusätzliche Optionen für Drag-and-Drop-Funktionen, wie z. B. die Verwendung eines JLayeredPane oder eines MouseMotionListener.

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!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage