Aprediendo con JCheckBox y JRadioButton

21 07 2008

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("https://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


Acciones

Information

7 responses

22 07 2008
zebas

si funciona!, me ha sido de utilidad. grax

19 11 2008
Carlos

gracias, me sirvio de mucha ayuda en mis aplicaciones.

10 04 2009
chayross

gracias!

14 05 2010
victor

muchas gracias!! estaba atrazado en un proyecto, fue de mucha ayuda..

14 07 2010
juan carlos

gracias
me ayudo demaciado

15 12 2015
ScorpJr

sabe alguien como se puede agrandar el tamaño del área de selección del jcheckbox???

25 08 2016
ULISES

si, tienes que editar tu modelo, con el que puedes personalizar tu checkBox

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: