JComboBox: cómo crear y trabajar con una lista combinada (Parte 1)
Saludos!
Ahora les entrego un artículo más de la serie de Interfaz Gráfica de Usuario con Java. En esta ocasión les hablaré sobre la clase JComboBox.
¿Qué es un control JComboBox?
Este control representa una lista desplegable donde los elementos de la misma están ocultos, visualizándose al activar el botón de desplegar de la lista. En la figura 1 puedes observar un ejemplo del control gráfico generado por esta clase.
Figura 1. Ejemplo de un objeto JComboBox o lista combinada
Creación de una Lista Combinada
Para crear un objeto JComboBox en tiempo de edición, sólo hay que agregar este control al JPanel desde la Paleta, como se puede mostrar en la figura 2.

Figura 2. El control ComboBox en la Paleta de Controles de Netbeans
Una vez creado el control, podemos asignarle un nombre o dejar el nombre de objeto que Netbeans le ha asignado por default. Para cambiar el nombre predeterminado:
- Click derecho sobre el control creado
- Click en “Change variabe name” (Cambiar nombre de variable)
- Esto abrirá un pequeño cuadro de diálogo en el que se deberá escribir el nuevo nombre del objeto. Recuerda que el control creado es un objeto, por lo que se deben respetar las reglas para la creación de identificadores en el lenguaje Java.
- Click en OK o Aceptar.
Ahora podemos proceder a modificar algunas de sus propiedades. En la figura 3 se muestra un resumen de las propiedades básicas de la clase JComboBox.

Figura 3. Tabla de propiedades configurables en tiempo de edición de JComboBox
Cómo llenar una lista combinada.
El llenado de una lista combinada se puede hacer de varias formas, y va a depender del uso que se le dará y por supuesto, de los requisitos del programa.
Llenado en tiempo de edición.
Los elementos desplegados en un objeto JComboBox se almacenan en la propiedad model. Un model o modelo se puede considerar como un arreglo especial en el que almacenan elementos de diversos controles gráficos como JTable y por supuesto JComboBox.
El modelo se puede modificar en tiempo de edición, para ello:
- Seleccionar el control JComboBox a editar.
- En el panel de Propiedades, hacer click en model.
- Esto desplegará el cuadro de diálogo que se puede observar en la figura 4.
- En este cuadro de diálogo, se puede llenar una lista combinada seleccionando una de tres opciones: ComboBox Model Editor, Value fro existing component y Custom Code. Para realizar el llenado de una lista combinada en tiempo de edición y que no nos interese que cambie su contenido durante la ejecución del programa, lo más sencillo es usar la primera opción, el editor del modelo.
- Como puedes apreciar, el cuadro de diálogo abierto es el editor del modelo. n la parte de abajo, se muestra el contenido del modelo, que en este caso es: Item 1, Item 2, Item 3, Item 4. Puedes hacer click directamente sobre cada Item y sustituirlo por tus propios datos. El editor muestra por default 4 elementos, pero obviamente puedes agregar los que sea necesario.

Figura 4. El editor del modelo del JComboBox
Toma en cuenta que de esta forma, tu programa SIEMPRE mostrará los mismos datos en el contro JComboBox, incluso aún cuando los hayas modificado en tiempo de ejecución, al cerrar el programa y correrlo nuevamente, tendrás los datos que configuraste en tiempo de edición.
Llenado en tiempo de ejecución.
Existen diversas formas para llenar el modelo de una lista combinada, decidir cuál es la mejor alternativa va a depender del problema a resolver: puedes desear que los datos provengan de una consulta de una tabla de base de datos, o que el usuario vaya agregando datos a través de escribir en una caja de texto.
Con la finalidad de que este artículo no se vuelva demasiado largo y tedioso de leer, dejaré la descripción del llenado en tiempo de ejecución para otra entrada de blog.
Acceso a los elementos de la lista.
Una vez que tenemos creada una lista combinada, queremos saber cuál de estos elementos ha sido seleccionado, conocer su índice, ser capaz de agregar más elementos a la lista o quitar algunos de estos elementos. Observa la figura 5 en la que resumo los métodos más importantes de la clase JComboBox.

Figura 5. Métodos comunes de la clase JComboBox
A continuación describiré algunos de estos métodos.
Cómo saber cuál es el elemento seleccionado
Utilizaremos los métodos getSelectedItem() y getSelectedIndex para acceder al elemento seleccionado por el usuario. El primer método regresa el elemento seleccionado en tipo Object, por lo que se requieren algo de código para realmente acceder al valor. Por ejemplo, si tengo una lista de nombres de personas, para obtener el nombre de una persona seleccionada y mostrarlo a su vez en una caja de texto, el siguiente fragmento de código realizará este proceso:
String nombre = lista.getSelectedItem().toString(); cajaSeleccionado.setText(nombre);
Nota que el objeto en donde se guardará el elemento seleccionado es tipo String, pero dado que el método getSelectedIndex regresa un valor tipo Object, es necesario hacer una conversión de tipos, lo cual se realiza con el llamado al método toString() que precisamente convertirá a String el Object y permitirá el guardado en la variable nombre. Un poco más simplificado podría quedar:
cajaSeleccionado.setText(lista.getSelectedItem().toString());
Por otro lado, getSelectedIndex no regresa en sí el elemento, sino el número de índice que tiene el elemento seleccionado en el modelo de la lista. De nuevo, si piensas en el modelo de la lista como una especie de arreglo, recuerda que los arreglos en Java inician en el índice 0. Entonces, la siguiente línea de código:
int indice = lista.getSelectedIndex();
cuando el usuario está seleccionando el nombre “Sinforosa” de la lista (Ve la figura 1) da como resultado que indice sea igual a 1.
En algún momento dado quizá necesites acceder a un elemento específico de la lista aunque no esté seleccionado. Para ello puedes utilizar el método getItemAt(), el siguiente fragmento muestra en una caja de texto el elemento 3 del ComboBox. Si el modelo de la lista es el que se aprecia en la figura 1, entonces en la caja veríamos “Teófilo”.
caja.setText(lista.getItemAt(3).toString());
Agregar y eliminar elementos
El método addItem() añade elementos a un JComboBox. Por ejemplo:
lista.addItem(caja.getText());
agrega el contenido de la caja de texto al final de la lista.
Para eliminar elementos de una lista combinada, se tienen los métodos removeAllItems() que como su nombre lo dice, elimina todo el contenido del modelo de la lista; y el método removeItemAt() que quita del modelo el elemento en el índice especificado. Por ejemplo:
indice = lista.getSelectedIndex(); lista.removeItemAt(indice);
elimina el elemento seleccionado actualmente en la lista combinada.
Es importante considerar que después de ejecutar una llamada al método removeAllItems, la lista está vacía, y cualquier llamada inmediata a getSelectedIndex, getSelectedItem o getItemAt causará una excepción debido precisamente a que no se encontrarán elementos en la lista. Incluso la ejecución continua del método removeItemAt en un momento dado generará que la lista se encuentre vacía y también lanzará una excepción. Por esto siempre podemos revisar el número de elementos de la lista usando el método getItemCount() como se muestra en el siguiente ejemplo, en el cual primero se revisa que el número de elementos en la lista sea mayor que 0 (lo que indica obviamente que la lista no está vacía) para proceder a eliminar el elemento seleccionado:
if ( lista.getItemCount()>0 ){ // Si el núm. total de elementos en lista es > 0 int indice = lista.getSelectedIndex(); lista.removeItemAt(indice); }
Hasta aquí termino con la primera parte del uso de la clase JComboBox, esperando que lo presentado haya sido de su interés, y ya saben, si tienen dudas, comentarios y/o observaciones, escríbanme 🙂