9
votes

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

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


1 commentaires

Cela pourrait ne pas être intuitif pour l'utilisateur. Avez-vous pensé à faire une option pour représenter l'état / le choix qui correspondrait à la désélection?


5 Réponses :


5
votes

0 commentaires

12
votes

Juste au cas où Jeff's Link est cassé à l'avenir, voici ce qui est décrit: Vous devez inclure la sous-classe Butongroup pour autoriser une sélection no-sélection et ajouter vos boutons à ce boutongroup.

public class NoneSelectedButtonGroup extends ButtonGroup {

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


2 commentaires

Ou une classe intérieure anonyme suffira, par exemple, Butongroup Mygroup = Nouveau bouton ButongRoup () {/ * code de dessus * /};


@Marmkjeronimus Réponse affine ceci pour éviter de nettoyer l'appelant de sélection bouton.Setselected (false) sur un Bouton / case à cocher qui n'est pas sélectionné.



0
votes

capturer l'événement pour faire quelque chose. Faites aussi le ci-dessous.

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


0 commentaires

0
votes

solution pour Pre 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);
    }
}


0 commentaires

1
votes

J'ai remarqué un comportement bizarre lorsque vous faites bouton.Setselected (false) sur un bouton / case à cocher qui n'est pas sélectionné. Il a tout désélectionné comme si je désélectionné quelque chose.

Je l'ai réparé de cette façon: xxx


0 commentaires