Hola a todos, el problema que tengo es sencillo, pero no se si es un problema mio o bien de Java, cuando realizo un setChanged para que todos mis observadores se enteren, no se llama al metodo update del observador, y solamente se llama en la 2º llamada, es decir, cuando se puede hacer el notify y otra vez un setChanged.
No entiendo por que esta ocurriendo esto, y no es en la primera llamada cuando debe de funcionar bien, quizás esto me este pasando a mi sólo, o es un problema de Java con los observadores, supongo que estaré haciendo algo mal. Os pongo el código:
Código:
public void addGrupo_Punto(Componente pp) {
// Primero buscamos si se encuentra ya dado de alta, para ponerlo a True, y si no se añade.
Iterator <Componente> it = this.lC_Group_Punto.iterator();
while (it.hasNext()){
Componente c = it.next();
if (pp.getGrupo().equals(c.getGrupo()) && pp.getNombreComponente().equals(c.getNombreComponente()) && !(c.isEstado())){
c.setEstado(true);
// Hacemos una notificación a quien nos observan
notifyObservers(Constantes.GRUPO_PUNTO);
setChanged();
return;
}
}
// Entonces no se ha encontrado.
this.lC_Group_Punto.add(pp);
// Hacemos una notificación a quien nos observan
notifyObservers(Constantes.GRUPO_PUNTO);
setChanged();
System.out.println("Hemos realizado la notificación");
}
Y este es el update del observador:
Código:
public void update(Observable ob, Object o) {
System.out.println("Se actualiza");
if (ob != null){
InfoPanel i = (InfoPanel)ob;
this.infoArrival.setText(i.toStringHTML_Arrival());
this.infoDeparture.setText(i.toStringHTML_Departure());
this.infoTerminal.setText(i.toStringHTML_Terminal());
this.infoPunto.setText(i.toStringHTML_Punto());
}
}
A ver si alguien me puede ayudar o como puedo solucionar esto por que he estado buscando algo por internet que le haya pasado a alguien similar y no he encontrado nada...
Muchas gracias a todos!