• 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

概要

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()メソッドを呼び出してグループ内のすべてのボタンを未選択状態に戻す

参考リンク

コメント