概要

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 all

解説

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

参考リンク

コメント