Frage

Wie kann ich erkennen, wenn ein JRadioButton von ‚nicht ausgewählten‘ geändert wird auf ‚ausgewählt‘, wenn sie mit der Maus angeklickt? Ich habe versucht, auf der Schaltfläche ein Action verwenden, sondern dass jedes Mal, wenn der Radiobutton gefeuert wird geklickt wird, nicht nur, wenn es verändert Zustand ‚ausgewählt‘.

Ich habe gedacht eine boolesche Variable beibehalten, die den Zustand der Taste erinnert, und es innerhalb des Action zu testen, um zu sehen, ob sein Zustand zu ändern, aber ich frage mich, ob es eine viel bessere ist oder sauberere Lösung.

War es hilfreich?

Lösung

Schauen Sie sich JRadioButton. addItemListener ()

EDIT: Es ist unwahrscheinlich, dass Sie wollen einen Change verwenden, wie es mehrmals pro Klick ausgelöst. Ein ItemListener feuert nur einmal pro Klick. hier sehen

EDIT2: Nur auf diese zu erweitern, eine Action auf einem JRadioButton wird jedes Mal Feuer ein Benutzer darauf klickt, auch wenn es bereits aktiviert ist. wenn es das ist, was Sie wollen, in Ordnung, aber ich finde es ärgerlich. Ich will nur sie benachrichtigt werden sie ausgewählt oder abgewählt.

Ein Change wird für alle möglichen Dinge, Feuer, Ihre Zuhörer Bedeutung erhalten 5 oder mehr Ereignisse pro Klick. Nicht gut.

Ein ItemListener wird Feuer nur , wenn die Zustandsänderungen oder abgewählt. Dies bedeutet, dass ein Benutzer es mehrere Male klicken und es wird nicht ausgelöst, wenn es sich nicht ändert. In Ihrem Handler-Methode erhalten Sie eine if Blockprüfmechanismen für SELECTED oder DESELECTED Status und tun, was es haben müssen:

@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.
    }
}

Es funktioniert einfach besser, weil Sie wissen, dass, wenn Sie in der Methode sind dann hat das Optionsfeld entweder gerade oder abgewählt worden ist, nicht, dass der Benutzer nur aus einem unbekannten Grund auf der Schnittstelle hämmern.

Andere Tipps

Ich glaube, Sie wollen eine ChangeListener Implementierung hinzuzufügen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top