如何创建允许取消选择实际选项的JToggleButton的ButtonGroup?

时间:2011-02-04 23:56:50

标签: java swing buttongroup

就是这样。我需要创建一个允许选择选项的ButtonGroup,或者,如果用户单击所选选项,则取消选择该项(不会选择任何内容),当然,捕获事件以执行某些操作。

5 个答案:

答案 0 :(得分:10)

以防杰夫的链接在未来被破坏,以下是所描述的内容: 你需要继承ButtonGroup以允许不选择,并将你的按钮添加到这个buttongroup。

public class NoneSelectedButtonGroup extends ButtonGroup {

  @Override
  public void setSelected(ButtonModel model, boolean selected) {
    if (selected) {
      super.setSelected(model, selected);
    } else {
      clearSelection();
    }
  }
}

答案 1 :(得分:5)

答案 2 :(得分:1)

我在未选中的按钮/复选框上执行button.setSelected(false)时发现了奇怪的行为。它取消选择了所有内容,好像我取消了选择。

我这样解决了:

public class NoneSelectedButtonGroup extends ButtonGroup {

  @Override
  public void setSelected(ButtonModel model, boolean selected) {
    if (selected) {
      super.setSelected(model, selected);
    } else if (getSelection() != model) {
      clearSelection();
    }
  }
}

答案 3 :(得分:0)

捕获事件以执行某些操作。也可以在下面进行。

@Override
public void actionPerformed(ActionEvent e) {
    ((JToggleButton)e.getSource()).setSelected(false);
}

修改 但是没有涉及ButtonGroup。

答案 4 :(得分:0)

前java 1.6的解决方案

public class NoneSelectedButtonGroup extends ButtonGroup {
    private AbstractButton hack;

    public NoneSelectedButtonGroup() {
        super();
        hack = new JButton();
        add(hack);
    }

    @Override
    public void setSelected(ButtonModel model, boolean selected) {
        super.setSelected(selected ? model : hack.getModel(), true);
    }
}