¿Cómo crear ButtonGroup de JToggleButton's que permite deseleccionar la opción actual?

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

  •  29-10-2019
  •  | 
  •  

Pregunta

Eso es todo.Necesito crear un ButtonGroup que permita seleccionar una opción o, si el usuario hace clic en la opción seleccionada, deseleccionar el elemento (no se seleccionará nada) y, por supuesto, capturar el evento para hacer algo.

¿Fue útil?

Solución

En caso de que el enlace de Jeff se rompa en el futuro, esto es lo que se describe: debe crear una subclase de ButtonGroup para permitir una no selección y agregar sus botones a este buttongroup.

public class NoneSelectedButtonGroup extends ButtonGroup {

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

Otros consejos

Noté un comportamiento extraño al hacer button.setSelected(false) en un botón / casilla de verificación que no está seleccionado.Deseleccionó todo como si yo deseleccionara algo.

Lo arreglé de esta manera:

public class NoneSelectedButtonGroup extends ButtonGroup {

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

Capture el evento para hacer algo.También haga lo siguiente.

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

EDITAR: Pero no hay ButtonGroup involucrado.

Solución para 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);
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top