Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/11/2016, 22:37
Avatar de detective_jd
detective_jd
 
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años, 7 meses
Puntos: 6
Patrón Observer en JPanels

Hola a todos, me gustaría preguntar lo siguiente: cómo puedo utilizar el patrón observer en un jpanel???

Verán intento que mis controladores que son observable por medio de la herencia, notifiquen a mi jpanel que implementa un observer, lo comenté la parte del observer porque no me anduvo:

Código Java:
Ver original
  1. package app.contr.util;
  2. import java.sql.SQLException;
  3. //import java.util.Observable;
  4. import up.max.proyectpages.structs.PagesList;
  5. public abstract class Controlador<T> //extends Observable
  6. {    
  7.     public abstract void save(T obj) throws SQLException;
  8.     public abstract void del(T obj) throws SQLException;
  9.     public abstract PagesList<T> find(String[] criterios) throws SQLException;
  10.     public abstract T findById(int id) throws SQLException;
  11.     public abstract T findByX(String x) throws SQLException;
  12.     public abstract int maxId();    
  13. }

Código Java:
Ver original
  1. package app.contr.man;
  2. import app.contr.clases.Rol;
  3. import app.contr.util.Controlador;
  4. import java.sql.SQLException;
  5. import up.max.proyectpages.structs.PagesList;
  6. public class ContrRoles extends Controlador<Rol>
  7. {
  8.     private static ContrRoles gest = null;
  9.     private ContrRoles(){ }
  10.     public static ContrRoles getInstance(){
  11.         if(gest == null){
  12.             gest = new ContrRoles();
  13.         }
  14.         return gest;
  15.     }
  16.     @Override
  17.     public void save(Rol obj) throws SQLException {
  18.         obj.save();
  19.         //this.setChanged();
  20.         //this.notifyObservers();
  21.     }
  22.  
  23.     @Override
  24.     public void del(Rol obj) throws SQLException {
  25.         obj.del();
  26.         //this.setChanged();
  27.         //this.notifyObservers();
  28.     }
  29.     @Override
  30.     public PagesList<Rol> find(String[] criterios) throws SQLException {
  31.         return new Rol().find(criterios);
  32.     }
  33.     @Override
  34.     public Rol findById(int id) throws SQLException {
  35.         return (Rol)new Rol().findById(id);
  36.     }    
  37.     @Override
  38.     public int maxId() {
  39.         return new Rol().maxId() + 1;
  40.     }
  41.  
  42.     @Override
  43.     public Rol findByX(String x) throws SQLException {
  44.         return (Rol)new Rol().findByX(x);
  45.     }
  46. }

Cuando quiero que me actualice el jpanel que tiene un jtable de los roles, no me lo muestra:

Código Java:
Ver original
  1. public class Gestiones extends javax.swing.JPanel //implements Observer
  2. {
  3.     private final JFrame padre;
  4.     private JFrame hijo = new JFrame();
  5.     TablaGenerica mr = new TablaGenerica(new ModeloRol());
  6. public Gestiones(JFrame xventana) {
  7.         initComponents();
  8.         this.padre = xventana;
  9.         this.padre.addWindowListener(new WindowAdapter() {
  10.             @Override
  11.             public void windowActivated(WindowEvent e) {
  12.                 // quiero evitar depender del evento activated del formulario
  13.                 mr.cargarTablaGenerica(table_rol);
  14.                 mr.getModelo().updateTable(null);
  15.                
  16.             }            
  17.         });
  18.     }
  19. /*
  20.     @Override
  21.     public void update(Observable o, Object arg) {        
  22.         mr.cargarTablaGenerica(table_rol);
  23.         mr.getModelo().updateTable(null);                      
  24.     }*/

Espero sus respuestas y saludos.