---
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 [#summary]
`ButtonGroup`中にある選択状態の`JToggleButton`をもう一度クリックすることで、その選択を解除できるように設定します。
#download(https://lh3.googleusercontent.com/-xZ1YFhJedcg/V1Q_LKyzhzI/AAAAAAAAOao/S-uPsKtdlg8k1eWf2yCIGnh4Hw2r7bGNACCo/s800/ToggleButtonGroup.png)
* Source Code Examples [#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();
}
}
}}
* Description [#explanation]
* Description [#description]
- `Default ButtonGroup`
-- `ButtonGroup`に追加された`JToggleButton`などはすでに選択状態にあるボタンをクリックしてもその選択を解除することはできない
- `Custom ButtonGroup(clears the selection)`
-- `ButtonGroup#setSelected(...)`メソッドをオーバーライドして現在選択状態のボタンをクリックした場合はグループ内のすべてのボタンを未選択状態に戻すために`ButtonGroup#clearSelection()`メソッドを呼び出す
* Reference [#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
#comment