MouseMotionListener dans Java Swing : gestion des événements lorsque les composants sont imbriqués
Dans Java Swing, l'interface MouseMotionListener permet aux programmeurs de répondre aux événements de mouvement de la souris . Cependant, lorsque plusieurs composants sont imbriqués les uns dans les autres, la propagation des événements peut devenir complexe. Cet article traite d'un scénario spécifique dans lequel les MouseMotionEvents d'un JScrollPane personnalisé sont bloqués par ses composants imbriqués.
Problème : blocage d'événements dans les composants imbriqués
Le problème survient lors de l'ajout de composants au JScrollPane, entraînant le blocage des événements MouseMoved et MouseDragged. Cela empêche la fonctionnalité prévue de panoramique de la vue de JScrollPane.
Approche ad hoc : utilisation des actions de défilement de JScrollPane
La solution consiste à exploiter les actions existantes dans JScrollPane qui sont généralement utilisées dans les raccourcis clavier. Cette approche permet de déclencher le défilement par le mouvement de la souris lui-même.
Implémentation :
Exemple de code :
L'extrait de code suivant illustre la mise en œuvre :
<code class="java">// ScrollTimer class... // ScrollPane class... // ... public static void main(String[] args) { EventQueue.invokeLater(() -> new ScrollAction().display()); }</code>
Avantages :
Remarque : Cette approche est personnalisable en ajustant la valeur N pour le nombre d'appels de minuterie et le DELAY pour l'intervalle de minuterie.
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!