Swing y JFC (Java Foundation Classes)

Los Botones de Radio son grupos de botones en los que, por convenci�n, s�lo uno de ellos puede estar seleccionado. Swing soporta botones de radio con las clases JRadioButton y ButtonGroup. Para poner un bot�n de radio en un men�, se utiliza la clase JRadioButtonMenuItem. Otras formas de presentar una entre varias opciones son los combo boxes y las listas. Los botones de radio tienen un aspecto similar a los check boxes, pero, por convenci�n, los checkboxes no tienen l�mites sobre cuantos �tems pueden estar seleccionados a la vez.

Como JRadioButton desciende de AbstractButton, los botones de radio Swing tienen todas las caracter�sitcas de los botones normales. como se explic� en C�mo usar Buttons. Por ejemplo, se puede especificar la imagen mostrada por un bot�n de radio.

Nota: En Swing 1.0.2, los botones ignoran sus mnem�nicos (teclas aceleradoras). Este error se ha corregido en Swing 1.0.3.

Aqu� podemos ver una imagen de una aplicaci�n que utiliza cinco botones de radio para elegir qu� tipo de mascota mostrar.

Intenta esto:
  1. Compila y ejecuta la aplicaci�n. El fichero fuente es RadioButtonDemo.java. Tambi�n necesitar�s cinco ficheros de im�genes: Bird.gif, Cat.gif, Dog.gif, Rabbit.gif, y Pig.gif.
  2. Pulsa el bot�n 'Dog' o pulsa Alt-d.

    El bot�n 'Dog' de selecciona, lo que hace que el bot�n 'Bird' sea deselecciondo. La imagen cambia de un p�jaro a un perro. Esta aplicaci�n tiene un oyente de action que escucha todos los botones de radio. Cada vez que el oyente de action recibe un evento, la aplicaci�n muestra la imagen del bot�n de radio que ha sido seleccionado.

Cada vez que el usuario pulsa un bot�n de radio, (incluso si ya estaba seleccionado), el bot�n dispara un evento action. Tambi�n ocurren uno o dos eventos item -- uno desde el bot�n que acaba de ser seleccionado, y otro desde el bot�n que ha perdido la selecci�n (si exist�a). Normalmente, las pulsaciones de los botones de radio se manejan utilizando un oyente de action.

Abajo est� el c�digo de RadioButtonDemo.java que crea los botones de radio en el ejemplo anterior y reacci�na ante las pulsaciones.

//In initialization code:
    // Create the radio buttons.
    JRadioButton birdButton = new JRadioButton(birdString);
    birdButton.setMnemonic('b');
    birdButton.setActionCommand(birdString);
    birdButton.setSelected(true);

    JRadioButton catButton = new JRadioButton(catString);
    catButton.setMnemonic('c');
    catButton.setActionCommand(catString);


    JRadioButton dogButton = new JRadioButton(dogString);
    dogButton.setMnemonic('d');
    dogButton.setActionCommand(dogString);

    JRadioButton rabbitButton = new JRadioButton(rabbitString);
    rabbitButton.setMnemonic('r');
    rabbitButton.setActionCommand(rabbitString);

    JRadioButton teddyButton = new JRadioButton(teddyString);
    teddyButton.setMnemonic('t');
    teddyButton.setActionCommand(teddyString);

    // Group the radio buttons.
    ButtonGroup group = new ButtonGroup();
    group.add(birdButton);
    group.add(catButton);
    group.add(dogButton);
    group.add(rabbitButton);
    group.add(teddyButton);

    // Register a listener for the radio buttons.
    RadioListener myListener = new RadioListener();
    birdButton.addActionListener(myListener);
    catButton.addActionListener(myListener);
    dogButton.addActionListener(myListener);
    rabbitButton.addActionListener(myListener);
    teddyButton.addActionListener(myListener);
...
class RadioListener implements ActionListener ... {
    public void actionPerformed(ActionEvent e) {
        picture.setIcon(new ImageIcon("images/" 
                                      + e.getActionCommand() 
				      + ".gif"));
    }
}

Para cada grupo de botones de radio, se necesita crear un ejemplar de ButtonGroup y a�adirle cada uno de los botones de radio. El ButtonGroup tiene cuidado de desactivar la selecci�n anterior cuando el usuario selecciona otro bot�n del grupo.

Generalmente se deber�a inicializar un grupo de botones de radio para que uno de ellos est� seleccionado. Sin embargo, el API no fuerza esta regla -- un grupo de botones de radio puede no tener selecci�n inicial. Una vez que el usuario hace una selecci�n, no existe forma para desactivar todos los botones de nuevo.

.�El API Radio Button

Puedes ver El API Button para informai�n sobre el API de AbstractButton del que descienden JRadioButton y JRadioButtonMenuItem. Los m�todos de AbstractButton que m�s se utilizan son setMnemonic, addItemListener, setSelected, y isSelected. Las piezas m�s utilizadas del API de Radio Button se dividen en dos grupos.

.�M�todos y Constructores m�s utilizados de ButtonGroups

M�todo Prop�sito
ButtonGroup() Crea un ejemplar de ButtonGroup.
void add(AbstractButton)

void remove(AbstractButton)

A�ade un bot�n a un grupo, o elimina un bot�n de un grupo.

.�Constructores de RadioButton

Constructor Prop�sito
JRadioButton(String)

JRadioButton(String, boolean)

JRadioButton(Icon)

JRadioButton(Icon, boolean)

JRadioButton(String, Icon)

JRadioButton(String, Icon, boolean)

JRadioButton()

Crea un ejemplar de JRadioButton. El argumento string especifica el texto, si existe, que debe mostrar el bot�n de radio. Similarmente, el argumento, Icon especifica la imagen que debe usar en vez la imagen por defecto de un bot�n de radio para el aspecto y comportamiento. Si se especifica true en el argumento booleano, inicializa el bot�n de radio como seleccionado, sujeto a la aprovaci�n del objeto ButtonGroup. Si el argumento booleano esta ausente o es false, el bot�n de radio est� inicialmente deseleccionado.
JRadioButtonMenuItem(String)

JRadioButtonMenuItem(Icon)

JRadioButtonMenuItem(String, Icon)

JRadioButtonMenuItem()

Crea un ejemplar de JRadioButtonMenuItem. Los argumentos se interpretan de la misma forma que los de los constructores de JRadioButton.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR