Home | Clases | Interfaces de usuario con Java Swing | Componentes JCheckbox, JRadioButton y JComboBox

Componentes JCheckbox, JRadioButton y JComboBox


JCheckbox

El control JCheckBox permite implementar un cuadro de selección (básicamente un botón de dos estados).

Ejemplo: Crear un programa que muestre 3 objetos de la clase JCheckBox con etiquetas de tres idiomas y mostrar en un JLabel los idiomas seleccionados.

import javax.swing.*;
import javax.swing.event.*;

public class Checkbox extends JFrame implements ChangeListener{

private JCheckBox checkBox1, checkBox2, checkBox3;
private JLabel label1;

public Checkbox() {

setLayout(null);

//Añado los 3 checkbox con su ChangeListener y la etiqueta
checkBox1 = new JCheckBox("Español");
checkBox1.setBounds(10,10,150,30);
checkBox1.addChangeListener(this);
add(checkBox1);

checkBox2 = new JCheckBox("Inglés");
checkBox2.setBounds(10,50,150,30);
checkBox2.addChangeListener(this);
add(checkBox2);

checkBox3 = new JCheckBox("Alemán");
checkBox3.setBounds(10,90,150,30);
checkBox3.addChangeListener(this);
add(checkBox3);

label1 = new JLabel("Idiomas: ninguno");
label1.setBounds(10,130,250,30);
add(label1);

}

//Implemento el método stateChanged
public void stateChanged(ChangeEvent e){

String texto = "Idiomas: ";

if (checkBox1.isSelected() == true) {
texto += "Español, ";
}
if (checkBox2.isSelected() == true) {
texto += "Ingles, ";
}
if (checkBox3.isSelected() == true) {
texto += "Alemán, ";
}

//Quito la última ',' y escribo el texto
texto = texto.substring(0, texto.length() - 2);
label1.setText(texto);
}

public static void main(String[] ar) {

Checkbox formularioCheckbox = new Checkbox();
formularioCheckbox.setDefaultCloseOperation(EXIT_ON_CLOSE);
formularioCheckbox.setBounds(0,0,300,200);
formularioCheckbox.setVisible(true);

}
}


JRadioButton

Otro control visual muy común es el JRadioButton. Normalmente se muestran un conjunto de ellos y permiten la selección simultánea de uno. Se deben agrupar para que actúen en conjunto, es decir cuando se selecciona uno automáticamente se deben deseleccionar los otros.

Ejemplo: Crear un programa que muestre 3 objetos de la clase JRadioButton que permitan configurar el ancho y alto del JFrame.

import javax.swing.*;
import javax.swing.event.*;

public class Radio extends JFrame implements ChangeListener{

private JRadioButton radio1, radio2, radio3;
private ButtonGroup grupoBotones;

public Radio() {

setLayout(null);

//Creo un nuevo grupo de botones
grupoBotones = new ButtonGroup();

//Añado los 3 radioButton con su ChangeListener
radio1=new JRadioButton("640*480");
radio1.setBounds(10,20,100,30);
radio1.addChangeListener(this);
add(radio1);
grupoBotones.add(radio1);

radio2=new JRadioButton("800*600");
radio2.setBounds(10,70,100,30);
radio2.addChangeListener(this);
add(radio2);
grupoBotones.add(radio2);

radio3=new JRadioButton("1024*768");
radio3.setBounds(10,120,100,30);
radio3.addChangeListener(this);
add(radio3);
grupoBotones.add(radio3);

}

//Implemento el método stateChanged
public void stateChanged(ChangeEvent e){

if (radio1.isSelected()) {
setSize(640,480);
}
if (radio2.isSelected()) {
setSize(800,600);
}
if (radio3.isSelected()) {
setSize(1024,768);
}
}

public static void main(String[] ar) {

Radio formularioRadio =new Radio();
formularioRadio.setDefaultCloseOperation(EXIT_ON_CLOSE);
formularioRadio.setBounds(0,0,350,230);
formularioRadio.setVisible(true);

}
}


JComboBox

El último componente del capítulo es el JComboBox, que nos permite seleccionar un String de una lista.

Para inicializar los String que contendrá el JComboBox debemos llamar al método addItem tantas veces como elementos queremos cargar.

Un evento muy útil con este control es cuando el operador selecciona un Item de la lista. Para capturar la selección de un item debemos implementar la interface ItemListener que contiene un método llamado itemStateChanged.

Ejemplo: Cargar en un JComboBox los nombres de varios colores. Al seleccionar alguno mostrar en un JLabel el color seleccionado.

import javax.swing.*;
import javax.swing.event.*;

public class Combobox extends JFrame implements ItemListener{

private JComboBox combo1;
private JLabel label1;

public Combobox() {

setLayout(null);

//Añado el ComboBox con sus items y su ItemListener, así como la etiqueta
combo1=new JComboBox();
combo1.setBounds(10,10,80,20);
add(combo1);

combo1.addItem("rojo");
combo1.addItem("verde");
combo1.addItem("azul");
combo1.addItemListener(this);

label1 = new JLabel("Color seleccionado: ninguno");
label1.setBounds(10,80,200,30);
add(label1);

}

//Implemento el método itemStateChanged
public void itemStateChanged(ChangeEvent e){

String texto = "Color seleccionado: ";

if (e.getSource() == combo1) {
String seleccionado=(String)combo1.getSelectedItem();
texto += seleccionado;
label1.setText(texto);
}
}

public static void main(String[] ar) {

Combobox formularioCombobox = new Combobox();
formularioCombobox.setDefaultCloseOperation(EXIT_ON_CLOSE);
formularioCombobox.setBounds(0,0,300,200);
formularioCombobox.setVisible(true);

}
}


Ejercicios propuestos

7. Crear un control JLabel que muestre el siguiente mensaje: "¿Acepta las condiciones del servicio?", luego un JCheckBox y finalmente un objeto de tipo JButton deshabilitado usando el método setEnabled(false). Cuando se marque el JCheckBox debemos habilitar el botón, y al hacer clic en él, un JLabel debe mostrar debajo "Has aceptado las condiciones del servicio".
8. Crear un formulario con dos JTextField y 4 JRadioButton (sumar, restar, multiplicar y dividir), de modo que podamos introducir dos números y al seleccionar un JRadioButton un JLabel nos muestre la operación. Además, si el resultado es positivo o 0 el fondo del JFrame debe ser verde, en caso contrario, será rojo. Por último, un botón debe permitir "reinicializar" el JFrame, de modo que los JTextField estén vacíos, los JRadioButton sin seleccionar y el fondo del color original.
9. Crear un formulario con 3 JComboBox con valores entre 0 y 255 y etiquetas R, G y B. Al pulsar en un botón, el fondo del JFrame debe ser del color seleccionado en los 3 JComboBox en formato RGB. Para añadir ítems a los JComboBox, necesitarás la expresión String.valueOf(num), y para luego convertir el valor seleccionado a entero, Integer.parseInt(string). Un nuevo color en formato RGB se añade con la expresión new Color(r,g,b), donde r,g y b son de tipo int. Modifica ahora el ejercicio para que permita introducir también los colores en un jTextField en formato hexadecimal (6 dígitos), de modo que además de cambiar el color, si se introduce en RGB aparezca el resultado en Hex y viceversa.


Fuente: Diego Moisset. tutorialesprogramacionya.com

Fecha de publicación: 18/09/2020
Asignaturas: desarrollo de interfaces
Temas: interfaces usuario usabilidad
Utilizamos cookies propias y de terceros para mejorar su experiencia en la navegación. Al seguir navegando entendemos que acepta su uso.
Si lo desea, consulte nuestras políticas de privacidad y cookies
ENTENDIDO
[X] Cerrar

Contacta conmigo


[X] Cerrar

Acceso alumnos