Jcombobox

Hola nuevamente! A ver si me podéis ayudar. Estoy cargando un jcombobox de una consulta a mi BD y esto lo hago ok, el lio se arma cuando intento no dejar ninguun elemento seleccionado.
Así lo lleno:
List<Entidades> users = new ArrayList<Entidades>();
//prueba tiene el resultado de la consulta
/*Entidades es una clase q tiene el id,texto que necesito para el jcombo*/
Entidades user = null;
prueba.Datos.first();
for (int i =0;i<prueba.CantidadRegistros;i++) {
user = new Entidades();
user.setId(prueba.Datos.getInt("id_cliente"));
user.setNombre(prueba.Datos.getString("nombre_cliente"));
cbxCliente.addItem(user);
users.add(user);
prueba.Datos.next();}
cbxCliente.setSelectedIndex(-1);
Ahora, que pasa, como estoy produciendo un evento indexchange en el combo estoy mandando a cargar otros combo que dependen de este.
Yo lo que necesito que al abrir esa ventana por primera vez no tener nada seleccionado.
Si no me comprenden díganme y help me please.
Gracias.

1 Respuesta

Respuesta
1
Siento la tardanza en responder, he estado off-line unos días.
La solución habitual para tu caso (aunque siempre se dice que no es elegante) es quitar los escuchadores del combo antes de hacer la operación, y volvérselos a añadir después de la misma. De esta manera el cambiar la opción seleccionado no producirá ninguna llamada a eventos. Es una solución un poco fea pero se usa mucho. Sería algo así:
// Quitamos escuchadores
ActionListener[] listeners = cbxCliente.getActionListeners();
for(ActionListener l:listeners) {
cbxCliente.removeActionListener(l);
}
// Hacemos lo que queramos
cbxCliente.setSelectedIndex(-1);
... Cualquier otra operacion que produjera eventos que no queremos va a aquí
// Devolvemos escuchadores
for(ActionListner l:listeners) {
cbxCliente.addActionListener(l);
}
Me ha vendo de maravilla lo que me habéis explicado, pero me hubiese gustado la forma más adecuada para hacer eso que quiero.
Saludos! Y gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas