10
votes

JCHeckBox Changer l'auditeur est informé de la souris sur les événements

Quelqu'un peut-il vous expliquer pourquoi cette pièce de code imprime la console lorsque vous déplacez votre souris sur la case? Quel est l'événement "changement" qui a lieu?

checkBox.setSelected(boolean)


5 commentaires

Immair, je pensais utiliser SEselected déclencherait des auditeurs de changement. Je dois penser à autre chose.


Si je cours sur Java 5 sur Mac OSX, je ne reçois pas la souris sur les événements.


@ JEEF3: SEselected déclenche des événements de changement. C'est pourquoi je l'utilise. La chose est que les événements de changement sont également déclenchés par la souris sur les motions :)


@Banjollity: ressemble à une différence de Windows-Mac JVM ...


En effet, sur mon Mac, la déclaration d'impression n'exécute pas lorsque je déplace ma souris sur la case à cocher. Je vois une réponse ci-dessous sur la définition du "Rollover" à False et d'autres réponses sur l'écoute d'événements différents, mais il existe clairement une différence entre les valeurs par défaut sur Mac et Windows ici. Aujourd'hui, j'ai rencontré cette différence car l'ordinateur de mon client est Windows et quelque chose s'est passé dans notre application que je ne m'attendais pas à ce que son curseur a reculé sur une case à cocher.


3 Réponses :


1
votes

L'état de la case à cocher (Même le modèle Cochez la case) change selon qu'il a la souris sur elle ou non. Donc, un événement de changement d'état devrait être attendu.

Alors, vérifiez simplement le retour pour voir quel état la case à cocher est entrée et mise à jour en conséquence. Il vaut mieux aller directement pour le modèle, plutôt que d'utiliser l'interface composante "gonflée".


0 commentaires

33
votes

Vous obtenez des événements sur la souris sur la mise au point gagné / perdu représente une modification de l'état du composant.

à la place, vous pouvez utiliser un itemlistener qui vous donnera des éditeurs.

L'objet qui implémente l'interface Itemlistener reçoit ce itemEvent lorsque l'événement se produit. L'auditeur est épargné les détails du traitement des mouvements individuels de la souris et des clics de souris, et peut plutôt traiter un événement "significatif" (sémantique) comme "élément sélectionné" ou "élément désélectionné".

Vous pouvez l'ajouter à votre case avec la méthode AddiTemlistener () dans la classe Abstractbutton. Il suffit de remplacer Addchangelistener avec ceci: xxx


2 commentaires

Merci ces travaux. Je suis toujours bien que les auditeurs d'articles appliqués pour énumérer des composants uniquement. :)


Aucun problème. C'est en fait ListSelectionListener qui sont utilisés pour les listes. Il existe une interface différente pour les listes et les boutons car les sélections de liste doivent prendre en charge la sélection d'une plage de cellules nécessitant un type d'événement différent.



7
votes

Utiliser c.setRolloVoyenabled (false ) `et vous n'obtiendrez aucun événement pour les mouvements de la souris.


0 commentaires