web-dev-qa-db-ja.com

JRadioButtonの状態変化の検出

マウスでクリックしたときにJRadioButtonが「非選択」から「選択」に変更されたことを検出するにはどうすればよいですか?ボタンでActionListenerを使用してみましたが、状態が「選択済み」に変化するときだけでなく、ラジオボタンがクリックされるたびに発生します。

ボタンの状態を記憶するブール変数を維持し、その状態を変更するかどうかを確認するためにActionListener内でテストすることを考えましたが、はるかに優れたまたはよりクリーンな解決策があるかどうか疑問に思っています。

30
cgull

JRadioButtonを見てください。 addItemListener ()

編集:クリックごとに複数回発生するため、changeListenerを使用することはほとんどありません。 itemListenerは、クリックごとに1回だけ発生します。 こちらをご覧ください

EDIT2:これを拡張するために、jradioButtonのactionListenerは、すでに選択されている場合でも、ユーザーがクリックするたびに起動します。それがあなたが望んでいることなら、結構ですが、私はそれが迷惑だと思います。選択または選択解除された場合にのみ通知を受けたい。

ChangeListenerはあらゆる種類のイベントで発生します。つまり、リスナーは1回のクリックで5つ以上のイベントを受け取ります。良くない。

Itemlistenerは、選択または選択解除された状態が変更された場合にのみ起動します。これは、ユーザーが複数回クリックすることができ、変更されない場合は起動しないことを意味します。ハンドラーメソッドでは、ifブロックでSELECTEDまたはDESELECTEDステータスをチェックし、そこで何をする必要があります。

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

メソッドにいる場合は、ラジオボタンが選択または選択解除されたことがわかります。ユーザーが何らかの未知の理由でインターフェースを叩いているだけではありません。

49
Nemi

ChangeListener実装を追加したいと思います。

0
Rob Di Marco