Swing/ToggleButtonGroup のバックアップソース(No.6)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- バックアップ を表示
- 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`に追加された`JTobbleButton`などは、すでに選択状態にあるボタンをクリックして選択解除することはできない - `Custom ButtonGroup(clears the selection)` -- `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