Wie erstelle ich eine ButtonGroup von JToggleButton's, mit der die Auswahl der tatsächlichen Option aufgehoben werden kann?

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

  •  29-10-2019
  •  | 
  •  

Frage

Das war's.Ich muss eine ButtonGroup erstellen, mit der Sie eine Option auswählen können. Wenn der Benutzer auf die ausgewählte Option klickt, deaktivieren Sie das Element (es wird nichts ausgewählt) und erfassen Sie das Ereignis, um etwas zu tun.

War es hilfreich?

Lösung

Für den Fall, dass Jeffs Link in Zukunft unterbrochen wird, wird Folgendes beschrieben: Sie müssen ButtonGroup in eine Unterklasse unterteilen, um eine Nichtauswahl zuzulassen, und Ihre Schaltflächen zu dieser Buttongroup hinzufügen.

public class NoneSelectedButtonGroup extends ButtonGroup {

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

Andere Tipps

Ich habe ein seltsames Verhalten festgestellt, als ich button.setSelected(false) für eine Schaltfläche / ein Kontrollkästchen ausgeführt habe, das nicht ausgewählt ist.Es hat alles abgewählt, als hätte ich etwas abgewählt.

Ich habe es folgendermaßen behoben:

public class NoneSelectedButtonGroup extends ButtonGroup {

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

Erfassen Sie das Ereignis, um etwas zu tun.Führen Sie auch die folgenden Schritte aus.

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

BEARBEITEN: Es ist jedoch keine ButtonGroup beteiligt.

Lösung für 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);
    }
}

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top