En el JList he usado DefaultListMode para meterle la informacion. A continuación os muestro como lo he usado y el problema que me surge.
Tengo una clase VentanaAsignarNotas, donde en el mismo constructor le paso los parametros necesarios para crearla directamente.
En ese constructor tengo un Listener (escuchador de eventos, para el JComboBox). Os muestro parte de dicho constructor a continuación:
Código PHP:
//Creo el JComboBox
JComboBox c_grupos;
...
//Le añado un comando para identificarlo en el escuchador
this.c_grupos.setActionCommand("ELEGIR GRUPO");
//Creo un escuchador para el JComboBox
GestionBotonAsignarNotas cg=new GestionBotonAsignarNotas(this);
this.c_grupos.addActionListener(cg);
En la clase GestionBotonAsignarNotas (clase escuchador) tengo este método:
Código PHP:
//Método
public void actionPerformed(ActionEvent e) {
if ("ELEGIR GRUPO".equals(e.getActionCommand())){
//Creo un objeto Alumno que me servirá más adelante
Alumno alum_aux;
//Guardo la cadena de texto que aparece en la seleccion del JComboBox de la clase VentanaAsignarNotas (vant es un objeto de la clase VentanaAsignarNotas que le paso como parameto al constructor de la clase escuchador GestionBotonAsignarNotas)
String grupo_seleccionado=(String) this.vant.c_grupos.getSelectedItem();
int i;
//Recorremos un arraylist que le pasamos a esta clase (GestionBotonAsignarNotas) por el constructor
for (i=0;i<this.bd_usuarios.usuarios.size();i++){
//Guardamos el objeto de la posicion (i)
alum_aux=(Alumno) this.bd_usuarios.usuarios.get(i);
//Si el atributo "grupo" de alum_aux es igual a lo seleccionado en el JComboBox...
if (alum_aux.grupo.equals(grupo_seleccionado)){
//...añadimos al DefaultListModel "modelo" los siguientes atributos de alum_aux
this.modelo.addElement(alum_aux.dni+"/"+alum_aux.nombre+"/"+alum_aux.apellidos);
}
}
//Le pasamos al metodo "representar_alumnos" de la clase VentanaAsignarNotas el DefaultListModel "modelo"
vant.representar_alumnos(this.modelo);
}
}
Aqui os pongo el método representar_alumnos
Código PHP:
//Metodo de la clase VentanaAsignarNotas
public void representar_alumnos(DefaultListModel model){
//Asignamos al DefaultListModel de la clase VentanaAsignarNotas el modelo de la clase escuchador (GestionBotonAsignarNotas)
this.modelo=model;
//Creamos el JList de la clase VentanaAsignarNotas (es decir, creamos el JList ^^)
this.li_alumnos=new JList();
//Asignamos el DefaultListModel al JList
this.li_alumnos.setModel(this.modelo);
//Añadimos el JList a la ventana
this.add(li_alumnos);
//Posicionamos o colocamos el JList en la ventana
this.li_alumnos.setBounds(100, 300, 400, 350);
//Hacemos el JList visible
this.li_alumnos.setVisible(true);
}
El problema que me surge es que el JList no es del todo "dinámico" (por decirlo de alguna manera), sino que, por ejemplo, en el JComboBox selecciono una opción, y entonces aparecen los atributos (dni+nombre...) de todos los alumnos que tienen en su atributo "grupo" la cadena de texto de la opcion seleccionada en el JComboBox.
Hasta ahi bien, pero el problema surge si selecciono otra opcion del JComboBox, ya que si hago eso, los alumnos pertenecientes a la primera opcion no desaparecen, sino que se permanecen en el JList debajo de los alumnos de la segunda opcion. Incluso si selecciono 2 veces la misma opción aparecen 2 veces los resultados repetidos en el JList.
Qué puedo hacer para solucionar este problema???
Hay algo que estoy haciendo mal???
Muchísimas gracias por leer este tostón!!
Un saludo.[/PHP]