Question

Comment puis-je détecter lorsqu'un bouton JRadioButton est remplacé par "non sélectionné" par "sélectionné" lorsque l'utilisateur clique avec la souris? J'ai essayé d'utiliser un ActionListener sur le bouton, mais il est déclenché chaque fois que l'utilisateur clique sur le bouton radio, pas seulement lorsqu'il passe à l'état "sélectionné".

J'ai envisagé de conserver une variable booléenne qui mémorise l'état du bouton et de la tester dans ActionListener afin de déterminer si son état devait être modifié, mais je me demande s'il existe une solution bien meilleure ou plus propre.

Était-ce utile?

La solution

Regardez JRadioButton. addItemListener ()

EDIT: il est peu probable que vous souhaitiez utiliser changeListener car il se déclenche plusieurs fois par clic. Un itemListener ne se déclenche qu'une fois par clic. Voir ici

EDIT2: Juste pour approfondir ceci, un actionListener sur un jradioButton sera déclenché chaque fois qu'un utilisateur clique dessus, même s'il est déjà sélectionné. si c'est ce que vous voulez, d'accord, mais je trouve cela agaçant. Je veux seulement être averti s'il est sélectionné ou désélectionné.

Un ChangeListener se déclenche pour toutes sortes de choses, ce qui signifie que votre auditeur recevra 5 événements ou plus par clic. Pas bien.

Un itemlistener ne déclenche que si l'état sélectionné ou désélectionné change. Cela signifie qu'un utilisateur peut cliquer dessus plusieurs fois et ne se déclenchera pas s'il ne change pas. Dans votre méthode de gestion, vous devez avoir un bloc si vérifiant le statut SELECTED ou DESELECTED et faire ce que vous souhaitez:

@Override
public void itemStateChanged(ItemEvent e) {
    if (e.getStateChange() == ItemEvent.SELECTED) {
        // Your selected code here.
    }
    else if (e.getStateChange() == ItemEvent.DESELECTED) {
        // Your deselected code here.
    }
}

Cela fonctionne simplement mieux car vous savez que si vous êtes dans la méthode, le bouton radio vient d'être sélectionné ou désélectionné, mais l'utilisateur ne fait que taper sur l'interface pour une raison inconnue.

Autres conseils

Je pense que vous souhaitez ajouter une implémentation ChangeListener .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top