9

それでおしまい。オプションを選択できるButtonGroupを作成する必要があります。または、ユーザーが選択したオプションをクリックした場合は、アイテムの選択を解除し(何も選択されません)、もちろん、イベントをキャプチャして何かを実行します。

4

5 に答える 5

12

将来、Jeffのリンクが壊れた場合に備えて、次のように説明します。ButtonGroupをサブクラス化して選択できないようにし、ボタンをこのボタングループに追加する必要があります。

public class NoneSelectedButtonGroup extends ButtonGroup {

  @Override
  public void setSelected(ButtonModel model, boolean selected) {
    if (selected) {
      super.setSelected(model, selected);
    } else {
      clearSelection();
    }
  }
}
于 2013-05-24T09:34:41.640 に答える
5

これは、その方法を正確に示していますhttps://dzone.com/articles/unselect-all-toggle-buttons

于 2011-02-05T01:26:51.520 に答える
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();
    }
  }
}
于 2014-03-06T14:35:18.990 に答える
0

何かをするためにイベントをキャプチャします。以下も行います。

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

編集: しかし、ButtonGroupは関係していません。

于 2013-06-02T03:20:31.533 に答える
0

Java1.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);
    }
}
于 2014-03-02T16:20:23.353 に答える