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>
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 :
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!