Swing/ToggleButtonGroup の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/ToggleButtonGroup へ行く。
- Swing/ToggleButtonGroup の差分を削除
--- category: swing folder: ToggleButtonGroup title: ButtonGroup中にある選択状態のJToggleButtonをクリックして選択解除可能にする tags: [ButtonGroup, JToggleButton] author: aterai pubdate: 2016-06-06T00:23:27+09:00 description: ButtonGroup中にある選択状態のJToggleButtonをもう一度クリックすることで、その選択を解除できるように設定します。 image: https://lh3.googleusercontent.com/-xZ1YFhJedcg/V1Q_LKyzhzI/AAAAAAAAOao/S-uPsKtdlg8k1eWf2yCIGnh4Hw2r7bGNACCo/s800/ToggleButtonGroup.png hreflang: href: https://java-swing-tips.blogspot.com/2017/02/click-on-already-selected-jtogglebutton.html lang: en --- * 概要 [#summary] `ButtonGroup`中にある選択状態の`JToggleButton`をもう一度クリックすることで、その選択を解除できるように設定します。 #download(https://lh3.googleusercontent.com/-xZ1YFhJedcg/V1Q_LKyzhzI/AAAAAAAAOao/S-uPsKtdlg8k1eWf2yCIGnh4Hw2r7bGNACCo/s800/ToggleButtonGroup.png) * サンプルコード [#sourcecode] #code(link){{ class ToggleButtonGroup extends ButtonGroup { private ButtonModel prevModel; private boolean isAdjusting; @Override public void setSelected(ButtonModel m, boolean b) { if (isAdjusting) { return; } if (m.equals(prevModel)) { isAdjusting = true; clearSelection(); isAdjusting = false; } else { super.setSelected(m, b); } prevModel = getSelection(); } } }} * 解説 [#explanation] - `Default ButtonGroup` -- `ButtonGroup`に追加された`JToggleButton`などはすでに選択状態にあるボタンをクリックしてもその選択を解除することはできない - `Custom ButtonGroup(clears the selection)` -- `ButtonGroup#setSelected(...)`メソッドをオーバーライドして選択状態にあるボタンをクリックした場合は`ButtonGroup#clearSelection()`メソッドを呼び出してグループ内のすべてのボタンを未選択状態に戻す -- `ButtonGroup#setSelected(...)`メソッドをオーバーライドして現在選択状態のボタンをクリックした場合はグループ内のすべてのボタンを未選択状態に戻すために`ButtonGroup#clearSelection()`メソッドを呼び出す * 参考リンク [#reference] - [https://stackoverflow.com/questions/37598206/how-to-deselect-already-selected-jradiobutton-by-clicking-on-it/37607560#37607560 java - How to deselect already selected JRadioButton by clicking on it - Stack Overflow] - [[ButtonGroup内のJRadioButtonなどの選択をクリア>Swing/ClearGroupSelection]] * コメント [#comment] #comment #comment