Comment créer Buttongroup de Jtogglebutton qui permet de désélectionner l'option réelle?

StackOverflow https://stackoverflow.com/questions/4904086

  •  29-10-2019
  •  | 
  •  

Question

C'est ça. J'ai besoin de créer un groupe Buttong qui permet de sélectionner une option ou, si l'utilisateur clique sur l'option sélectionnée, désélectionnez l'élément (rien ne sera sélectionné) et, bien sûr, capturez l'événement pour faire quelque chose.

Était-ce utile?

La solution

Juste au cas où le lien de Jeff serait cassé à l'avenir, voici ce qui est décrit: vous devez sous-classer Buttongroup pour permettre une non-sélection et ajouter vos boutons à ce groupe Buttong.

public class NoneSelectedButtonGroup extends ButtonGroup {

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

Autres conseils

Cela montre exactement comment faire ça http://java.dzone.com/articles/unselect-all-toggle-buttons

J'ai remarqué un comportement étrange quand je fais button.setSelected(false) sur un bouton / boîte à cocher qui n'est pas sélectionné. Cela désélectionné comme si je désélectionnais quelque chose.

Je l'ai corrigé de cette façon:

public class NoneSelectedButtonGroup extends ButtonGroup {

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

Capturez l'événement pour faire quelque chose. Faites également ce qui est ci-dessous.

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

ÉDITER:Mais il n'y a pas de couple de couple impliqué.

Solution pour pré 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);
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top