7.4 CHECKBOX

 

Hola a todos, ¿qué tal? Los checkBox o casillas de verificación, son elementos que normalmente aparecen en los formularios que permiten al usuario realizar múltiples selecciones:



Los checkBox utilizan la clase JCheckBox que contiene dos métodos: isSelected() y setSelected(boolean). Recomiendo ir a la API de Java para ver el uso de esta clase, sus métodos, para cuando estemos realizando la práctica verlo más claro.

Para ver el uso de las casillas de verificación en Java, que mejor con una práctica cuyo código es el siguiente:

package swing;

 

import javax.swing.JFrame;

import javax.swing.JPanel;

 

public class PruebaCheck {

 

       public static void main(String[] args) {

           

             MarcoCheck mimarco = new MarcoCheck();

           

             mimarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

       }

 

}

 class MarcoCheck extends JFrame {

     

       public MarcoCheck(){

           

             setBounds(550, 300, 550, 350);

           

             setVisible(true);

           

             LaminaCheck milamina = new LaminaCheck();

           

             add(milamina);

           

       }

}

 class LaminaCheck extends JPanel {

       

        public LaminaCheck() {

             

             

        }

 }

Este código lo que hace es ejecutarnos un marco o ventana:



Lo que vamos a hacer es lo siguiente, en la parte superior va a haber un texto, en la parte inferior van a ver dos checks, si seleccionamos el check de la derecha se pondrá el texto en negrita, si quitamos el check se quitará el texto en negrita, si activamos el check de la izquierda el texto se pondrá en cursiva y si lo quitamos se quitará la cursiva. Podemos tener ambos checks seleccionados y tener el texto en negrita y cursiva:



Para hacer esta práctica utilizaremos la clase Font que modifica las características del texto.

Para empezar vamos a crearnos tres variables:

            private JLabel texto;

       

        private JCheckBox neg, cur;

Las variables son: la etiqueta donde irá el texto y dos checkBox, los creamos después de la llave de cierre de la clase LaminaCheck.

Nos metemos dentro del constructor de la clase LaminaCheck y vamos a empezar con la distribución de la lámina por lo que establecemos la distribución con un layout, la distribución por defecto:

        public LaminaCheck() {

             

            setLayout(new BorderLayout());

        }

A continuación vamos a utilizar la clase Font, la instanciamos ya que el texto que va a aparecer en la ventana va a tener una serie de características, tipo de letra, texto plano y tamaño, luego creamos el texto que va a aparecer, iniciamos la etiqueta:

        public LaminaCheck() {

             

            setLayout(new BorderLayout());

           

            Font miletra=new Font("Serif", Font.PLAIN, 24);

           

            texto = new JLabel("Estamos aprendiendo los Componentes Swing, https://empezandojava.blogspot.com/");

 

        }

Tenemos que indicarle que el texto que va aparecer tiene que tener las características que hemos indicado en miletra:

       public LaminaCheck() {

              

            setLayout(new BorderLayout());

           

            Font miletra=new Font("Serif", Font.PLAIN, 24);

           

            texto = new JLabel("Estamos aprendiendo los Componentes Swing, https://empezandojava.blogspot.com/");

           

            texto.setFont(miletra);

 

        }

Creamos una lámina superior donde se va a ubicar el texto, agregamos el texto a esta lámina y distribuimos donde queremos que este la lámina:

    public LaminaCheck() {

             

            setLayout(new BorderLayout());

           

            Font miletra=new Font("Serif", Font.PLAIN, 24);

           

            texto = new JLabel("Estamos aprendiendo los Componentes Swing, https://empezandojava.blogspot.com/");

           

            texto.setFont(miletra);

           

            JPanel laminatexto = new JPanel();

           

            laminatexto.add(texto);

           

            add(laminatexto, BorderLayout.CENTER);

 

 

        }

Creamos los dos checks:

        public LaminaCheck() {

             

            setLayout(new BorderLayout());

           

            Font miletra=new Font("Serif", Font.PLAIN, 24);

           

            texto = new JLabel("Estamos aprendiendo los Componentes Swing, https://empezandojava.blogspot.com/");

           

            texto.setFont(miletra);

           

            JPanel laminatexto = new JPanel();

           

            laminatexto.add(texto);

           

            add(laminatexto, BorderLayout.CENTER);

 

            neg = new JCheckBox("Negrita");

           

            cur = new JCheckBox("Cursiva");

 

        }

Antes de ubicarlos hay que indicar que estén a la escucha de un evento de tipo ActionListener, por lo que después del constructor nos creamos una clase interna que implemente ActionListener, creamos el método actionPerformed:

       private class ManejaChecks implements ActionListener{

 

                  @Override

                  public void actionPerformed(ActionEvent e) {

                        // TODO Auto-generated method stub

                       

                  }

           

           

        }

Para decirle a los checks que estén a la escucha hay que instanciar la clase que acabamos de crear ManejaChecks:

        public LaminaCheck() {

             

            setLayout(new BorderLayout());

           

            Font miletra=new Font("Serif", Font.PLAIN, 24);

           

            texto = new JLabel("Estamos aprendiendo los Componentes Swing, https://empezandojava.blogspot.com/");

           

            texto.setFont(miletra);

           

            JPanel laminatexto = new JPanel();

           

            laminatexto.add(texto);

           

            add(laminatexto, BorderLayout.CENTER);

 

            neg = new JCheckBox("Negrita");

           

            cur = new JCheckBox("Cursiva");

           

            neg.addActionListener(new ManejaChecks ());

           

            cur.addActionListener(new ManejaChecks ());

 

        }

Nos creamos la lámina donde van a ir los checks y los agregamos:

        public LaminaCheck() {

             

            setLayout(new BorderLayout());

           

            Font miletra=new Font("Serif", Font.PLAIN, 24);

           

            texto = new JLabel("Estamos aprendiendo los Componentes Swing, https://empezandojava.blogspot.com/");

           

            texto.setFont(miletra);

           

            JPanel laminatexto = new JPanel();

           

            laminatexto.add(texto);

           

            add(laminatexto, BorderLayout.CENTER);

 

            neg = new JCheckBox("Negrita");

           

            cur = new JCheckBox("Cursiva");

           

            neg.addActionListener(new ManejaChecks ());

           

            cur.addActionListener(new ManejaChecks ());

           

            JPanel laminaCheck = new JPanel();

           

            laminaCheck.add(neg);

           

            laminaCheck.add(cur);

           

            add(laminaCheck, BorderLayout.SOUTH);

 

        }

Con esto ya tendríamos ubicados los diferentes elementos que van a formar el marco, la etiqueta con el texto y los dos checks, probamos:



El texto ha salido bastante grande, por lo que modificamos la clase Font el tamaño de la letra.

Font miletra=new Font("Serif", Font.PLAIN, 12);

Falta por darle funcionalidad a los checks, que lo vamos a programar en el método actionPerformed y para ello vamos a utilizar dos constantes de clase: Font.Bold y Font.Italic. Para más información revisad la API de Java, porque ahí os va a explicar que almacenan un tipo entero, BOLD tiene un valor de 1 y la ITALIC vale 2. Voy a poner el código y a continuación lo explico.

                  public void actionPerformed(ActionEvent e) {

                       

                int tipo=0;

               

                if(neg.isSelected()) tipo+=Font.BOLD;

              

                if(cur.isSelected()) tipo+=Font.ITALIC;

              

                texto.setFont(new Font("Serif", tipo, 15));

 

                       

                  } 

Nos creamos una variable de tipo entero que la vamos a inicializar a 0. A continuación, mediante una condicional if le indicamos utilizando el método isSelected() que si el check está activado aumente la variable tipo en 1. En el momento que volvamos a quitar el check se ejecuta de nuevo el método actionPerformed por lo que la variable tipo vuelve a valer 0, al entrar en el primer if al no estar seleccionado no aumentaría la variable tipo. Lo mismo ocurre con el segundo condicional del check de la cursiva, pero en lugar de aumentar en 1, aumenta en 2 que es el valor que tiene está constante de clase. Y por último, establecemos el tipo de letra, que es lo mismo que pusimos como parámetros en la clase Font, en lugar de pasarle que es un texto plano en el segundo parámetro le pasamos la variable tipo.

Probamos:



Activamos el check de la Negrita:



Desactivamos el check de la Negrita y activamos el check de la Cursiva:



Activamos los dos checks:





Esto ha sido todo en cuanto a los checkbox. Si tenéis dudas ya sabéis que podéis enviarme un correo a amizba@gmail.com o comentar vuestras dudas a través de los comentarios del blog. Hasta pronto.

7.3 ÁREAS DE TEXTO << >> 7.5 BOTONES DE RADIO(JRadioButton)



No hay comentarios:

Publicar un comentario