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

参考リンク

コメント