Existen componentes en java, que nos permiten SELECCIONAR SOLOMENTE UNA OPCION ENTRE VARIAS, a estos componentes en java, le denominamos JRadioButton, otros componentes que nos permiten SELECCIONAR VARIAS OPCIONES ENTRE MUCHAS, en java les llamamos JCheckBox.
En esta oportunidad, para aprender a usar estos 2 componentes, tenemos un ejemplo:
“El ejemplo trata sobre la compra de un ordenador (Portatil o de Escritorio), luego, tendremos la opcion de agregarle algunos accesioros mas(memoria usb, y ariculares)”
La imagen mostrada es la ventana de interfaz de usuario.
En este caso, se ha implementado solamente 2 (dos) clases (Window y ControlaWindow). la primera(Window) es la UI(interfaz de usuario), en otras palabras la ventana dibujando los conponentes(jTextfile, jLabel,jCheckBox, etc), la segunda clase(ControlaWidow), es la encarga de gestionar todos los eventos de la primera, ademas de ejecutar algunas acciones(como sumar y restar)
Ahora Entramos a implementar la primera clase(Window.java), un detalles es que para crear los JRadiobutton, es necesario crear, un ButtonGroup que es un componente que agrupa varios JRadiobutton con la finalidad de que todos los JRadiobutton incluidos en el ButtonGroup esten enlazados, de tal forma q solo uno a la vez se puede seleccionar.
ButtonGroup grupoDeBotones = new ButtonGroup(); JRadioButton jrb1 = new JRadioButton(); JRadioButton jrb2 = new JRadioButton(); grupoDeBotones.add(jrb1); grupoDeBotones.add(jrb2);
Por otro lado en la clase Window, hay q crear un objeto de la clase de controlara todos sus eventis, en este caso de ControlaWindow.
ControlaWindow controlawindow = new ControlaWindow();
Aqui en fuente de Window.java:
import javax.swing.*;
public class Window extends JFrame {
/*Demo por inforux*/
public Window() {
initComponents();
}
public void initComponents() {
grupoDeBotones = new ButtonGroup();
jPanel1 = new JPanel();
jrbCP = new JRadioButton();
jrbCE = new JRadioButton();
jPanel2 = new JPanel();
jchkUsb = new JCheckBox();
jchkAur = new JCheckBox();
jPanel4 = new JPanel();
jLabel2 = new JLabel();
jtfTotal = new JTextField();
jLabel3 = new JLabel();
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setTitle("http://inforux.wordpress.com");
setResizable(false);
getContentPane().setLayout(null);
jPanel1.setBorder(BorderFactory.createTitledBorder("Seleccione Equipo"));
jPanel1.setLayout(null);
jrbCP.setText("Comp. Portatil ( $ 1000 )");
jPanel1.add(jrbCP);
jrbCP.setBounds(10, 23, 200, 30);
jrbCE.setText("Comp. de Escritorio ( $ 800 )");
jPanel1.add(jrbCE);
jrbCE.setBounds(210, 23, 220, 30);
getContentPane().add(jPanel1);
jPanel1.setBounds(35, 40, 440, 70);
jPanel2.setBorder(BorderFactory.createTitledBorder("Agregados Opcionales"));
jPanel2.setLayout(null);
jchkUsb.setText("Usb 2 gb ( $.20 )");
jPanel2.add(jchkUsb);
jchkUsb.setBounds(10, 20, 160, 23);
jchkAur.setText("Auriculares ( $.30 )");
jPanel2.add(jchkAur);
jchkAur.setBounds(10, 50, 170, 23);
getContentPane().add(jPanel2);
jPanel2.setBounds(30, 120, 190, 90);
jPanel4.setBorder(BorderFactory.createTitledBorder("Precio Total"));
jPanel4.setLayout(null);
jLabel2.setText("$.");
jPanel4.add(jLabel2);
jLabel2.setBounds(30, 20, 20, 20);
jPanel4.add(jtfTotal);
jtfTotal.setBounds(60, 20, 100, 20);
getContentPane().add(jPanel4);
jPanel4.setBounds(250, 130, 190, 60);
jLabel3.setText("DEMO POR INFORUX");
getContentPane().add(jLabel3);
jLabel3.setBounds(180, 10, 150, 30);
/*agregamos los JRadioButton al ButtonGroup*/
grupoDeBotones.add(jrbCE);
grupoDeBotones.add(jrbCP);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-501)/2, (screenSize.height-252)/2, 501, 252);
/*Creamos un objeto controlador de esta clase*/
ControlaWindow controlaWindow = new ControlaWindow(this);
/* y luego los agregamos al objeto creado*/
jchkAur.addActionListener(controlaWindow);
jchkUsb.addActionListener(controlaWindow);
jrbCE.addActionListener(controlaWindow);
jrbCP.addActionListener(controlaWindow);
}
public static void main(String args[]) {
new Window().setVisible(true);}
// declaramos las variables de los componentes
public ButtonGroup grupoDeBotones;
public JLabel jLabel2;
public JLabel jLabel3;
public JPanel jPanel1;
public JPanel jPanel2;
public JPanel jPanel4;
public JCheckBox jchkAur;
public JCheckBox jchkUsb;
public JRadioButton jrbCE;
public JRadioButton jrbCP;
public JTextField jtfTotal;
}
La segunda clase, solo se dedicara a manejar los eventos de la ventana, ademas de realizar algunas operacines del ejecicio.
Aqui el fuente:
import java.awt.event.*;
public class ControlaWindow implements ActionListener{/*clase escuchadora de nuestra vista*/
Window ventana;/*declaramos un objeto del tipo window*/
int aur=30,usb=20,cp,ce,total=0;/*declaramos e instanciamos nuestras variables*/
public ControlaWindow(Window objeto){
ventana = objeto;
}
public void actionPerformed(ActionEvent evento)
{
if (evento.getSource()== ventana.jchkAur){/*escuchamos el evento en auriculares*/
if (ventana.jchkAur.isSelected()){/*nos aseguramos q esta chekeado*/
total=total+aur;
ventana.jtfTotal.setText(Integer.toString(total));}
else {/*si no esta chekeado*/
total=total-aur;
ventana.jtfTotal.setText(Integer.toString(total));} }
else {
if (evento.getSource()== ventana.jchkUsb){/*escuchamos el evento en usb*/
if (ventana.jchkUsb.isSelected()){/*nos aseguramos q esta chekeado*/
total=total+usb;
ventana.jtfTotal.setText(Integer.toString(total));}
else {/*si no esta chekeado*/
total=total-usb;
ventana.jtfTotal.setText(Integer.toString(total));} }
else {
if (evento.getSource()== ventana.jrbCE){/*escuchamos el evento en comp. escritorio*/
total=total-cp; ce=800;
total=total+ce;
ventana.jtfTotal.setText(Integer.toString(total));}
else {
if (evento.getSource()== ventana.jrbCP){/*escuchamos el evento en comp. portatil*/
total=total-ce; cp=1000;
total=total+cp;
ventana.jtfTotal.setText(Integer.toString(total));}
}} }
}
}
Luego, tendremos q compilar la clase Window.java
$javac Window.java
Listo podremos ver el ejemplo en ejecuccion, aquialgunos pantallazos para q ilustren el ejemplo
Espero les sirva de ayuda.
Saludos






si funciona!, me ha sido de utilidad. grax
gracias, me sirvio de mucha ayuda en mis aplicaciones.
gracias!
muchas gracias!! estaba atrazado en un proyecto, fue de mucha ayuda..
gracias
me ayudo demaciado