viernes, 24 de junio de 2011

Como usar un JRadioButton y ButtonGroup Java

ButtonGroup se utiliza para presentar al usuario un conjunto de opciones excluyentes entre si, es decir si el usuario selecciona un componente RadioButton todos los demás componentes RadioButton en la forma, se desmarcan solos.
Aquí se muestra la clase en la cual se crean los JRadioButton y el ButtonGroup:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class componentes extends JFrame{

private JTextField tf;
private Font pf;
private Font bf;
private Font itf;
private Font bif;
private JRadioButton pb;
private JRadioButton bb;
private JRadioButton ib;
private JRadioButton bib;
private ButtonGroup group;


public componentes(){
super ("El Dark Blog");
setLayout (new FlowLayout());

// Creamos un JTextField
tf = new JTextField("Dark les explico el JRadioButton", 25);
add(tf);

// Creamos los JRadioButton
pb = new JRadioButton("plain", true);
bb = new JRadioButton("bold", false);
ib = new JRadioButton("italic", false);
bib = new JRadioButton("bold y italic", false);
// Agregamos los JRadioButton a nuestro JFrame
add(pb);
add(bb);
add(ib);
add(bib);

// A los JRadioButton los reunimos en un ButtonGroup
group = new ButtonGroup();
group.add(pb);
group.add(bb);
group.add(ib);
group.add(bib);

pf = new Font("Serif", Font.PLAIN, 14);
bf = new Font("Serif", Font.BOLD, 14);
itf = new Font("Serif", Font.ITALIC, 14);
bif = new Font("Serif", Font.BOLD + Font.ITALIC, 14);
tf.setFont (pf);

// Registramos los escuchas de los JRadioButton
pb.addItemListener (new HandlerClass (pf));
bb.addItemListener (new HandlerClass (bf));
ib.addItemListener (new HandlerClass (itf));
bib.addItemListener (new HandlerClass (bif));

}
private class HandlerClass implements ItemListener{
private Font font;

public HandlerClass (Font f){
font = f;

}
public void itemStateChanged(ItemEvent event){
tf.setFont (font);
}

}

}
---------------------------------------------------------------
También les dejo el archivo en el cual se encuentra el ejemplo realizado en NetBeans, aquí el link para descargarlo.

2 comentarios: