JRadioButtonの状態変化の検出
-
07-07-2019 - |
質問
マウスでクリックしたときにJRadioButtonが「未選択」から「選択」に変更されたことを検出するにはどうすればよいですか?ボタンでActionListenerを使用しようとしましたが、状態が「選択済み」に変わったときだけでなく、ラジオボタンがクリックされるたびに起動されます。
ボタンの状態を記憶するブール変数を維持することを考え、ActionListener内でテストして状態を変更するかどうかを確認しましたが、もっと良い解決策があるかどうか疑問に思っています。
解決
JRadioButtonをご覧ください。 addItemListener ()
EDIT:クリックごとに複数回起動するため、changeListenerを使用することはほとんどありません。 itemListenerは、クリックごとに1回だけ起動します。 こちら
EDIT2:これを拡張するために、jradioButtonのactionListenerは、既に選択されていても、ユーザーがクリックするたびに起動します。それがあなたが望むものなら、結構ですが、私はそれが迷惑だと思います。選択または選択解除されたことが通知されるだけです。
ChangeListenerはあらゆる種類のイベントに対して起動します。つまり、リスナーはクリックごとに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.
}
}
メソッド内にいる場合、ラジオボタンが選択または選択解除されていることを知っているため、ユーザーが何らかの不明な理由でインターフェイスを叩いているだけではなく、うまく機能します。
他のヒント
ChangeListener
の実装を追加すると思います。