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