Veamos ahora el comportamiento básico del componente JComboBox. Este componente permite seleccionar un elemento de una lista. El ejercicio consiste en presentar un JFrame, que a su vez contiene un panel y éste contiene:
- Una etiqueta (JLabel) con el texto “Seleccione una Opción:”
- Una caja combinada (JComboBox) con dos opciones (Hombre, Mujer), que se introducen a través de la propiedad Model.
- Una etiqueta (JLabel) que contiene inicialmente un icono que se corresponde con un chico.
El ejercicio consiste en capturar la acción del cambio/selección del elemento de la lista de la caja realizado por el usuario. Para comprobar la selección del elemento de la lista asignaremos a la segunda etiqueta un icono de un chico o una chica según se seleccione Hombre o Mujer respectivamente.
Es decir:
Para realizar este ejemplo:
1.- Inicie una sesión de NetBeans y haga “proyecto Nuevo”, “Java” y finalmente “Java Aplicacion”. He llamado al proyecto “combobox”. Una vez que NetBeans muestre la clase principal, añadimos al proyecto (botón derecho sobre el proyecto), un JFrame al que llamaremos ventana.
2.- Permitiremos desde el método main de la clase Main, crear o instanciar la clase ventana y visualizarla con el código
ventana pantalla = new ventana();
pantalla.setVisible(true);
3.-Construimos la interfaz del JFrame tal como se ha planteado. La asignación del icono se realiza a través de la propiedad “icon” de la segunda etiqueta, a través del cuadro de diálogo siguiente:
Puede descargar desde aquí los iconos del chico/a , estos iconos, en mi caso, están colocados en la carpeta del proyecto, en mi caso “combobox”.
4.- Definimos dos iconos denominados iconochico e iconochica dentro de la clase ventana en la forma
ImageIcon iconochico = new ImageIcon(getClass().getResource(“/combobox/chico.png”));
ImageIcon iconochica = new ImageIcon(getClass().getResource(“/combobox/chica.png”));
para poder hacer esto hay que importar la definición de la clase IMageIcon a través de la instrucción
import javax.swing.ImageIcon;
colocada justo debajo de la incorporación del paquete combobox;
5.- Finalmente, abrimos el evento actionPerformed del componente JComboBox para escribir el siguiente código:
Integer indice = jComboBox1.getSelectedIndex();
if (indice.equals(0))
{
jLabel1.setIcon(iconochico);
}
else if (indice.equals(1))
{
jLabel1.setIcon(iconochica);
}
else jLabel1.setIcon(null);
Véase que el método getSelectedIndex() proporciona el índice, comenzando por cero, del elemento seleccionado por el usuario según la lista de valores.
Este es un método fundamental de este componente, junto con getSelectedItem() y getItemCount().
Se sugiere al lector que pruebe con estos métodos…
Para utilizar getSelectedItem(), añada una nueva etiqueta (jLabel3) y en el evento anterior escriba
String elemento = (String)jComboBox1.getSelectedItem();
jLabel3.setText(elemento);
Para utilizar getItemCount(), añada una nueva etiqueta (jLabel4) y en el evento anterior escriba
Integer num = jComboBox1.getItemCount();
jLabel4.setText(String.valueOf(num));
Vea, que cuando cambia el valor seleccionado de la caja combinada las etiquetas 3 y 4 toman los valores “Hombre” y “2″ respectivamente. Esto se debe al código anterior, sin embargo, la primera vez, cuando se activa el formato los textos de las etiquetas son “jlabel1″ y “jlabel2″. ¿Puede mejorarse esto? ¿Porqué no aparece el texto del item previamente seleccionado, así como el número de opciones que tiene la caja combinada?…
Le sugiero que investigue en el evento “WindowsActivated” del componente JFrame…


