概要

ButtonGroup中にある選択状態のJToggleButtonをもう一度クリックすることで、その選択を解除できるように設定します。

サンプルコード

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();
  }
}
View in GitHub: Java, Kotlin

解説

  • Default ButtonGroup
    • ButtonGroupに追加されたJToggleButtonなどはすでに選択状態にあるボタンをクリックしてもその選択を解除することはできない
  • Custom ButtonGroup(clears the selection)
    • ButtonGroup#setSelected(...)メソッドをオーバーライドして現在選択状態のボタンをクリックした場合はグループ内のすべてのボタンを未選択状態に戻すためにButtonGroup#clearSelection()メソッドを呼び出す

参考リンク

コメント