• 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

概要

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

参考リンク

コメント