Maison > Java > javaDidacticiel > le corps du texte

Comment activer la gestion des événements MouseRelease après un glisser-déposer sur JLabel ?

Barbara Streisand
Libérer: 2024-10-23 22:07:30
original
555 Les gens l'ont consulté

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

Fonctionnalité glisser-déposer avec gestion personnalisée des événements de souris pour JLabels

Vous cherchez à implémenter la fonctionnalité glisser-déposer en remplaçant les événements de souris sur un JLabel tableau nommé « Miniatures ». Cependant, vous avez observé que le gestionnaire d'événements mouseReleased n'est pas déclenché après avoir défini le glisser-déposer dans le gestionnaire d'événements mousePressed.

Comprendre le problème

Dans ce scénario spécifique, l'événement de relâchement de la souris n'est pas enregistré car l'opération de glisser-déposer intercepte les événements de la souris. Lorsque vous appelez la méthode exportAsDrag dans le gestionnaire mousePressed, elle lance l'opération de glisser, consommant les événements de souris suivants au sein de la même opération.

Solution

Pour résoudre ce problème, vous peut déplacer la logique de glisser-déposer vers un gestionnaire d'événements mouseDragged distinct. Cela garantit que l'événement de libération de la souris peut être géré indépendamment.

Code révisé :

<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>
Copier après la connexion

En séparant la fonctionnalité glisser-déposer dans un gestionnaire mouseDragged dédié, vous peut conserver le comportement souhaité et garantir que les événements de relâchement de la souris sont gérés correctement pour votre tableau JLabel.

Notes supplémentaires :

  • Envisagez d'utiliser une implémentation transférable pour définir les données transférées lors des opérations de glisser-déposer.
  • Explorez des options supplémentaires pour la fonctionnalité de glisser-déposer, telles que l'utilisation d'un JLayeredPane ou d'un MouseMotionListener.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!