tengo cuatro JRatioButtons dentro de un ButtonGroup en Java. Los dos primeros están habilitados y los otros dos son discapacitados. Si uno específico JRatioButton es seleccionado necesito habilitar las dos personas con discapacidad JRatioButtons.

Estoy tratando de este para averiguar el estado de los botones y permitir la movilidad queridos, al parecer he encontrado con la desactivación del estado, pero no cambia ese estado.

private void activateButtons() {
    Enumeration<AbstractButton> elements = myButtonGroup.getElements();
    while (elements.hasMoreElements()) {
          AbstractButton button = (AbstractButton)elements.nextElement();
          if (button.isEnabled()) {
            System.out.println("This button is disabled! The text of the button is: '" + button.getText() + "'");
            button.setEnabled(true);
          }
    }
}

Im llegar el texto de la movilidad de los botones, pero no puedo deshabilitar ellos.

Alguna ayuda? Gracias!

  • Usted simplemente necesita para mantener las referencias a la ButtonGroup objetos o el jRadioButton objetos en sí, y deshabilitar ellos cuando sea necesario. ButtonGroup proporciona un getElements() método
  • Usted está probablemente en busca de la propiedad enabled.
  • He editado la pregunta, como se puede ver he intentado utilizar el getElements() método para la ButtonGroup, y no puedo encontrar lo que el botón está deshabilitado y el texto utilizando la consola, pero no puedo utilizar el setEnabled método para deshabilitar la jRadioButton…. No sé por qué… gracias por la ayuda
  • Tengo un error en el código, en realidad está trabajando, pero yo estaba tratando de habilitar una ya botón habilitado…. voy a publicar la respuesta más tarde
InformationsquelleAutor Hannibal | 2012-10-24

3 Comentarios

  1. 1

    No sé si ningún problema en encontrar la referencia de los botones de radio en el segundo grupo, o simplemente no se puede desactivar los botones de radio.

    Para la primera pregunta, es simple, usted acaba de mantener la referencia de los botones de radio en el segundo grupo.

    Para la segunda pregunta, usted necesita para crear subclases de una JRadioButton porque me pareció que no se puede simplemente llamar a deshabilitar para un objeto de botón de radio.

    El ejemplo de código de la clase sub sería como este.

    this.editable = editable;
    if (editable) {
        this.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        super.enableEvents(Event.MOUSE_DOWN | Event.MOUSE_UP);
    } else {
        this.setCursor(CursorFactory.createUnavailableCursor());
        super.disableEvents(Event.MOUSE_DOWN | Event.MOUSE_UP);
    }
    • Hey sean si puedo ir directamente a por el JrRadioButton referencia el editor dice «no se puede resolver a un tipo de error». Creo que es porque los botones están en el interior de la ButtonGroup, en realidad necesito para acceder a los botones dentro de la ButtonGroup hacer «algo» con ellos… gracias por la ayuda
    • Acabo de comprobar el API, el botón de grupo tiene un método llamado getElements (), que devuelve todos los botones que están participando en este grupo. Usted puede recorrer en este colecciones.
  2. 1

    Probar esto, funciona.

    AbstractButton button = ...
    
    button.getModel().setEnabled(true/false)
  3. 0

    Ya, usted setEnabled(true) a un habilitado RadioButton.

    Así que aquí la edición, la esperanza puede ayudar a alguien.

    private void activateButtons() 
    {
        Enumeration<AbstractButton> elements = myButtonGroup.getElements();
        while (elements.hasMoreElements()) 
        {
              AbstractButton button = (AbstractButton)elements.nextElement();
              if (button.isEnabled())     //if enabled (true) 
              {
                System.out.println("This button is disabled! The text of the button is: '" + button.getText() + "'");
                button.setEnabled(false); //set it disabled (false)
              }
        }
    }

    Gracias @Hannibal, tu post me salvó el día.

Dejar respuesta

Please enter your comment!
Please enter your name here