suchen
HeimJavajavaLernprogrammWie kann sichergestellt werden, dass das MouseReleased-Ereignis für JLabel Drag-and-Drop in Java funktioniert?

How to Ensure MouseReleased Event Works for JLabel Drag-and-Drop in Java?

JLabel-Mausereignisse für Drag-and-Drop

Die Verwendung von Mausereignissen mit einem JLabel ermöglicht Drag-and-Drop-Funktionalität, kann jedoch zu Problemen führen Probleme, bei denen „mouseReleased“ nicht wie erwartet funktioniert, wenn Drag-and-Drop im Ereignis „mousePressed“ definiert ist.

Um das Problem zu verstehen, ist es wichtig zu beachten, dass bei der Definition der Drag-and-Drop-Funktionalität in „mousePressed“ die Übertragung initiiert wird Verfahren. Dies bedeutet, dass alle nachfolgenden Ereignisse, einschließlich „mouseReleased“, möglicherweise nicht wie erwartet verarbeitet werden.

Im bereitgestellten Code:

<code class="java">            public void mousePressed(MouseEvent me) {
                ...
                handler.exportAsDrag(comp, me, TransferHandler.COPY);
            }</code>

Der Aufruf von exportAsDrag startet den Drag-and-Drop-Vorgang, der effektiv ist hat Vorrang vor anderen Mausereignissen. Dadurch werden nachfolgende Ereignisse wie „mouseReleased“, die den Abschluss des Drag-and-Drop-Vorgangs erfordern, nicht ausgelöst.

Alternativen:

Zwei alternative Ansätze können Beheben Sie dieses Problem:

  1. Verwenden Sie einen MouseMotionListener:

    <code class="java">     addMouseMotionListener(new MouseMotionAdapter() {
             @Override
             public void mouseDragged(MouseEvent e) {
                 // Handle drag operation
             }
         });</code>

    Dieser Ansatz entkoppelt den Ziehvorgang vom Tastendruck, sodass „mouseReleased“ funktioniert wie erwartet.

  2. Verwenden Sie JComponent.setTransferHandler und starten Sie Drag-and-Drop in MouseReleased:

    <code class="java">     setTransferHandler(new TransferHandler("text"));
    
         addMouseListener(new MouseAdapter() {
             @Override
             public void mouseReleased(MouseEvent e) {
                 if (e.isControlDown()) {
                     getTransferHandler().exportAsDrag(this, e, TransferHandler.COPY);
                 }
             }
         });</code>

    Hier ist der Übertragungshandler auf dem JLabel festgelegt und der Ziehvorgang wird nur dann initiiert, wenn die Strg-Taste während „MouseReleased“ gedrückt wird, sodass „MouseReleased“ wie vorgesehen funktioniert.

Das obige ist der detaillierte Inhalt vonWie kann sichergestellt werden, dass das MouseReleased-Ereignis für JLabel Drag-and-Drop in Java funktioniert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools