Foros del Web » Programación para mayores de 30 ;) » Java »

¿Cómo hacer funcionar dos JTable?

Estas en el tema de ¿Cómo hacer funcionar dos JTable? en el foro de Java en Foros del Web. Hola amigos la cuestión ahora es la siguiente, ¿Cómo hago para que dos tablas trabajen con el mismo DefaultTableModel sin que haga errores? En el ...
  #1 (permalink)  
Antiguo 20/04/2013, 23:24
 
Fecha de Ingreso: septiembre-2008
Mensajes: 221
Antigüedad: 15 años, 6 meses
Puntos: 1
¿Cómo hacer funcionar dos JTable?

Hola amigos la cuestión ahora es la siguiente,

¿Cómo hago para que dos tablas trabajen con el mismo DefaultTableModel sin que haga errores?

En el diseño de la clase AgregarMateriasDocenteDialogo
quiero tener dos tablas.

1. Stática, que me muestre el listado de materias de la universidad
2. Dinámica que me registre de forma indefinida las materias que yo escoja.

El código funciona, pero nosé porqué me vota ese errror, creo que es porque intento trabajar con dos tipos diferentes de tablas con el mismo modelo.

Adjunto el código actual y un video que ilustra el problema.

Video: http://www.youtube.com/watch?v=0v9jbWSyRYo
Codigo: https://www.dropbox.com/s/3laywi1u7q...rsion_1.06.rar
  #2 (permalink)  
Antiguo 21/04/2013, 00:12
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 5 meses
Puntos: 36
Respuesta: ¿Cómo hacer funcionar dos JTable?

El primer error del "docente no encontrado"

Te recomiendo hacer una función auxiliar para ver si existe, porque ?

como es un for va a dar vueltas por la cantidad de elementos de la lista, imagina, tienes 10 profesores, cuantas vueltas son ? 10

por lo tanto 1 va a entrar al if, y las demás al else y va a salir ese mensaje 9 veces

entonces te sugiero hacer una función auxiliar para que busque si existe el docente

Código:
public Docente buscarDocente(int codigo){
       Docente d = null;
       for(Docente doc : docentes){
              if(codigo == doc.getCodigo()){
                     d = doc;  
               }
       }
       return d;
}
Entonces ahí recién puedes tener 2 opciones, que exista (devuelve un docente) o que no exista (null) y enviar su respectivo mensaje

Ahora el error de la tabla, no se si te pueda ayudar esto

cuando esté en el ultimo if

Código:
if ( materia.getCodigomateria().equalsIgnoreCase(this.txtCodigomateria.getText().trim()))
                                    {
                                        // Registrar datos en la tabla
                                        model=(DefaultTableModel)this.jTable1.getModel();
                                        Object fila[] = new Object[3];
                                        fila[0] = materia.getCodigomateria();
                                        fila[1] = materia.getNombremateria();
                                        fila[2] = materia.getCreditos();
                                        model.addRow(fila);

                                        nombredelatabla.setModel(model); 
                                                                          
                                     
                                     }
Espero poder haberte ayudado, saludos
  #3 (permalink)  
Antiguo 21/04/2013, 11:15
 
Fecha de Ingreso: septiembre-2008
Mensajes: 221
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: ¿Cómo hacer funcionar dos JTable?

Eres EXCELENTE hermano lograste solucionar el problema de las tablas!!!!! Ahora sólo falta el de la búsqueda :(

Osea, ya he colocado este metodo antes de cualquier accion.

Código Javascript:
Ver original
  1. public Docente buscarDocente(String codigo){
  2.        Docente d = null;
  3.        for(Docente docente : docentes){
  4.               if(codigo.equalsIgnoreCase(docente.getCodigodocente())){
  5.                      d = docente;  
  6.                }
  7.  
  8.        }
  9.     return d;
  10.        }

Luego en la accion de hacer click al boton,

Código Javascript:
Ver original
  1. private void botonbuscarActionPerformed(java.awt.event.ActionEvent evt) {                                            
  2.  
  3.         for ( Docente docente : docentes)
  4.         {
  5.             this.buscarDocente(docente.getCodigodocente());
  6.         }
  7.      
  8.     }

Y no me funciona, ¿Porque?, ¿Que debo hacer? Gracias de antemano.

Última edición por ambigus; 21/04/2013 a las 11:25 Razón: Excelente Ayuda!!
  #4 (permalink)  
Antiguo 21/04/2013, 12:12
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 5 meses
Puntos: 36
Respuesta: ¿Cómo hacer funcionar dos JTable?

Con la función buscarDocente no tienes porque volver a hacer el for

en el actionperformed

solo tienes que poner esto

Docente d = buscarDocente("codigo");
if(d!=null){
//el docente existe
}
else{
//el docente no existe
}

Saludos
  #5 (permalink)  
Antiguo 21/04/2013, 12:28
 
Fecha de Ingreso: septiembre-2008
Mensajes: 221
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: ¿Cómo hacer funcionar dos JTable?

Hola amigo!!! GRACIASSSSSSS a Funcionado Perfectamente. Ahora tengo otra pregunta, En la JTable1 Dinámica,¿Es posible que si ya le registré antes materias al docente me las muestre y al mismo tiempo me permita agregarle más materias? Pues nosé...Eso sería que imprimira el tamaño de la lista Si ya tiene la lista llena. Y sino la tiene llena pues entonces sigo con el procedimiento normalito. ¿Es eso posible?..

Aunque también podría ser que para la asignación de Filas en la asignacion de filas dinamicas me asignara el tamaño de la lista de materias del docente y empezara contar el agregado de las nuevas filas desde ese numero... Nose ideas locas mias....

Gracias de antemano!!!!
  #6 (permalink)  
Antiguo 21/04/2013, 13:29
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 5 meses
Puntos: 36
Respuesta: ¿Cómo hacer funcionar dos JTable?

No entendí muy bien pero de eso se trata esto, de error y práctica

Usted entre a "picar" en el código y si algo le falla, para eso estamos

Saludos
  #7 (permalink)  
Antiguo 21/04/2013, 13:46
 
Fecha de Ingreso: septiembre-2008
Mensajes: 221
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: ¿Cómo hacer funcionar dos JTable?

Gracias hombre!!!.

Bueno, he resulto dejarlo así por ahora.

La idea era que si el maestro previamente ya se le agregaron materias entonces me imprima esa lista de materias en el jTable1 y a su vez también esa tabla siga siendo dinámica. Y me permita agregar más materias.

¿Es eso posible?

PD: Ese buscador auxiliar es una idea EXCELENTE!!!!! Con él logré recorrer la lista del docente y verificar si ya tiene la materia registrada, así que si ya la tiene pues me vota un error de que ya la tiene. :D En forma tal de que relativamente no necesito imprimir la lista de materias del docente en la tabla dinámica. Más sin embargo...sería genial lograr mejorarla :)

Última edición por ambigus; 21/04/2013 a las 13:51
  #8 (permalink)  
Antiguo 21/04/2013, 14:09
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 5 meses
Puntos: 36
Respuesta: ¿Cómo hacer funcionar dos JTable?

Si, si se puede, en la clase Docente debes tener un ArrayList de Materias

Entonces cuando se le agregue se le agregue a la tabla como puse y agregarlo a la arraylist del docente

Código:
if ( materia.getCodigomateria().equalsIgnoreCase(this.txtCodigomateria.getText().trim()))
                                    {
                                        // Registrar datos en la tabla
                                        model=(DefaultTableModel)this.jTable1.getModel();
                                        Object fila[] = new Object[3];
                                        fila[0] = materia.getCodigomateria();
                                        fila[1] = materia.getNombremateria();
                                        fila[2] = materia.getCreditos();
                                        model.addRow(fila);

                                        nombredelatabla.setModel(model); 
                                        d.getMateriadeldocente().add(materia);                       
                                     
                                     }
Eso debería guardar cada materia al docente

Saludos
  #9 (permalink)  
Antiguo 21/04/2013, 14:14
 
Fecha de Ingreso: septiembre-2008
Mensajes: 221
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: ¿Cómo hacer funcionar dos JTable?

Jejeje, Gracias eso ya lo había hecho :)

Código Javascript:
Ver original
  1. if ( materia.getCodigomateria().equalsIgnoreCase(this.txtCodigomateria.getText().trim()))
  2.                                       {
  3.                                         this.txtCodigomateria.setText(null);
  4.                                         this.txtCodigomateria.requestFocus();  
  5.                                         docente.setMateriadeldocente(materia.getCodigomateria());  
  6.                                         // Registrar datos en la tabla
  7.                                         model=(DefaultTableModel)this.jTable1.getModel();
  8.                                         Object fila[] = new Object[3];
  9.                                         fila[0] = materia.getCodigomateria();
  10.                                         fila[1] = materia.getNombremateria();
  11.                                         fila[2] = materia.getCreditos();
  12.                                         model.addRow(fila);
  13.  
  14.                                         jTable1.setModel(model);        
  15.                                       }

La cuestión es que cuando inicie la ventana, me llene la tabla jtable1 dinámica con la lista de materias del docente ( si es que previamente ya las había llenado ) pues como para ilustrar mejor la lógica. ¿Eso se puede hacer?

Saludos!!
  #10 (permalink)  
Antiguo 21/04/2013, 14:16
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 5 meses
Puntos: 36
Respuesta: ¿Cómo hacer funcionar dos JTable?

Pero no había que poner el código del docente para que lo mostrara ?

saludos
  #11 (permalink)  
Antiguo 21/04/2013, 14:29
 
Fecha de Ingreso: septiembre-2008
Mensajes: 221
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: ¿Cómo hacer funcionar dos JTable?

Si claro :) Aquí está ;)

Código Javascript:
Ver original
  1. if(!(this.txtCodigodocente.getText().trim().isEmpty()))
  2.         {
  3.            
  4.             Docente d = buscarMateriasdocente(this.txtCodigomateria.getText().trim());
  5.             if(d!=null){
  6.                 JOptionPane.showMessageDialog(this,
  7.                 "La Materia ya ha sido ingresada para el docente",
  8.                 "Agregar Materias a un Docente", JOptionPane.ERROR_MESSAGE);
  9.              }
  10.            
  11.            Materia m = buscarMateria(this.txtCodigomateria.getText().trim());
  12.             if(m==null){
  13.                 JOptionPane.showMessageDialog(this,
  14.                 "La Materia no se encuentra registrada en la Universidad",
  15.                 "Agregar Materias a un Docente", JOptionPane.ERROR_MESSAGE);
  16.                 this.txtCodigomateria.setText(null);
  17.                 this.txtCodigomateria.requestFocus();
  18.              }
  19.            
  20.             else{
  21.                
  22.                 for ( Docente docente : docentes )
  23.                 {
  24.                     if ( docente.getNombredocente().equalsIgnoreCase(this.txtNombredocente.getText().trim()))
  25.                     {    
  26.                               for(Materia materia : materias)
  27.                                  {
  28.                                      
  29.  
  30.                                     if ( materia.getCodigomateria().equalsIgnoreCase(this.txtCodigomateria.getText().trim()))
  31.                                       {
  32.                                         this.txtCodigomateria.setText(null);
  33.                                         this.txtCodigomateria.requestFocus();  
  34.                                         docente.setMateriadeldocente(materia.getCodigomateria());  
  35.                                         // Registrar datos en la tabla
  36.                                         model=(DefaultTableModel)this.jTable1.getModel();
  37.                                         Object fila[] = new Object[3];
  38.                                         fila[0] = materia.getCodigomateria();
  39.                                         fila[1] = materia.getNombremateria();
  40.                                         fila[2] = materia.getCreditos();
  41.                                         model.addRow(fila);
  42.  
  43.                                         jTable1.setModel(model);        
  44.                                       }
  45.                                       filas++;        
  46.                                    }    
  47.                            
  48.                      }
  49.    
  50.                 }      
  51.             }
  52.            
  53.            
  54.                  
  55.                  
  56.           }
  #12 (permalink)  
Antiguo 21/04/2013, 14:51
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 5 meses
Puntos: 36
Respuesta: ¿Cómo hacer funcionar dos JTable?

Ya entonces este código tiene que ir en el actionPerformed cuando se busca al Docente

Código:
Docente d = buscarDocente("elcodigo");
model=(DefaultTableModel)this.jTable1.getModel();

for(Materia m:d.getMateriasdeldocente()){
   Object[] fila = new Object[3];
    fila[0] = m.getCodigomateria();
    fila[1] = m.getNombremateria();
    fila[2] = m.getCreditos();
   model.addRow(fila);
}

tabla.setModel(model);
Prueba con eso

saludos
  #13 (permalink)  
Antiguo 21/04/2013, 15:04
 
Fecha de Ingreso: septiembre-2008
Mensajes: 221
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: ¿Cómo hacer funcionar dos JTable?

Gracias. Pero,

Código Javascript:
Ver original
  1. Docente d = buscarDocente(this.txtCodigodocente.getText().trim());
  2.             if(d!=null){
  3.                
  4.                 model=(DefaultTableModel)this.jTable1.getModel();
  5.  
  6.             for(Materia m:d.getMateriasdeldocente()){
  7.                 Object[] fila = new Object[3];
  8.                  fila[0] = m.getCodigomateria();
  9.                  fila[1] = m.getNombremateria();
  10.                  fila[2] = m.getCreditos();
  11.             model.addRow(fila);
  12.             }
  13.  
  14.             jTable1.setModel(model);
  15.                
  16.                 this.txtNombredocente.setText(d.getNombredocente());
  17.                 this.txtApellidodocente.setText(d.getApellidodocente());
  18.              }
  19.            
  20.             else{
  21.                     JOptionPane.showMessageDialog(this,
  22.                     "El docente no ha sido registrado en la Universidad",
  23.                     "Agregar Materias a un Docente", JOptionPane.ERROR_MESSAGE);
  24.             }

En la linea 6 del codigo anterior me vota error diciendo: requerido: Materia, encontrado: String

Nosé si sirva de algo,

Pero esto he hecho para que me muestre la lista de Materias de la Universidad,

Código Javascript:
Ver original
  1. /// Mostrar las materias matriculadas en la universidad
  2.        
  3.         model=(DefaultTableModel)this.jTable2.getModel();
  4.        
  5.         model.setRowCount(materias.size());    
  6.         model.addRow(new Object[filas1]);
  7.        
  8.         for ( Materia materia : materias )
  9.                 {
  10.          for(int x=0;x<this.jTable2.getColumnCount()-1;x++)
  11.             {
  12.                
  13.                   model.setValueAt(materia.getCodigomateria(),   filas1,0);
  14.                   model.setValueAt(materia.getNombremateria(),   filas1,1);
  15.                   model.setValueAt(materia.getCreditos(),        filas1,2);
  16.                
  17.                
  18.             }
  19.                filas1++;
  20.                 }

Y quizá serviría hacer esto con la jTable1,

model.setRowCount(materias.size());

Pero eso le daría un límite a las filas, ¿No?. Entonces creo que ya nose podrían agregar nuevas filas :(

¿Será que se puede?

Saludos!!
  #14 (permalink)  
Antiguo 21/04/2013, 15:37
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 5 meses
Puntos: 36
Respuesta: ¿Cómo hacer funcionar dos JTable?

es que lo que hay ahí, es un arraylist de string y yo puse de materia por eso

Saludos
  #15 (permalink)  
Antiguo 21/04/2013, 19:07
 
Fecha de Ingreso: septiembre-2008
Mensajes: 221
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: ¿Cómo hacer funcionar dos JTable?

Una pregunta,entonces, ¿Cómo le especifico que que sea para String?...

¿Cómo quedaría el for?

for(Materia m : d.getMateriasdeldocente()){

Saludos
  #16 (permalink)  
Antiguo 21/04/2013, 19:30
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 5 meses
Puntos: 36
Respuesta: ¿Cómo hacer funcionar dos JTable?

for(String s : d.getMateriasdeldocente()){
//funcion auxiliar para buscar materia
Materia m = buscarMateria(s);
Object[] fila = new Object[3];
fila[0] = m.getCodigomateria();
fila[1] = m.getNombremateria();
fila[2] = m.getCreditos();
model.addRow(fila);
}

tabla.setModel(model);

Saludos
  #17 (permalink)  
Antiguo 22/04/2013, 17:17
 
Fecha de Ingreso: septiembre-2008
Mensajes: 221
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: ¿Cómo hacer funcionar dos JTable?

Holaaaaaaaaa

Gracias :) Sólo que pues al final implementé otro tipo de for, pero también funciona.

Una pregunta ¿Porqué no me imprime todos los estudiantes de la materia?

Este es el código del AgregarNotasEstudianteDialogo

Código Javascript:
Ver original
  1. package universidad_grafica;
  2.  
  3.  
  4. import java.util.List;
  5. import javax.swing.JOptionPane;
  6. import javax.swing.table.DefaultTableModel;
  7.  
  8. public class AgregarNotasEstudianteDialogo extends javax.swing.JDialog {
  9.  
  10.     private List<Docente>    docentes = null;
  11.     private List<Materia>    materias = null;
  12.     private List<Estudiante> estudiantes = null;
  13.    
  14.    
  15.    
  16.     public List<Docente> getDocentes(){ return docentes; }
  17.     public void setDocentes(List<Docente> docentes){ this.docentes = docentes;}
  18.    
  19.     public List<Materia> getMaterias(){ return materias; }
  20.     public void setMaterias(List<Materia> materias){ this.materias = materias;}
  21.    
  22.     public List<Estudiante> getEstudiantes(){ return estudiantes; }
  23.     public void setEstudiantes(List<Estudiante> estudiantes){ this.estudiantes = estudiantes;}
  24.    
  25.     public Docente buscarDocente(String codigo){  // Buscador auxiliar para Docentes
  26.        Docente d = null;
  27.        for(Docente docente : docentes){
  28.               if(codigo.equalsIgnoreCase(docente.getCodigodocente())){
  29.                      d = docente;
  30.                    
  31.                }
  32.        }
  33.  
  34.     return d;
  35.        }
  36.    
  37.      public Materia buscarMateria(String codigodelamateria){  // Buscador auxiliar para Materias
  38.        Materia m = null;
  39.        for(Materia materia : materias){
  40.               if(codigodelamateria.equalsIgnoreCase(materia.getCodigomateria())){
  41.                      m = materia;
  42.                    
  43.                }
  44.        }
  45.  
  46.     return m;
  47.        }
  48.    
  49.        public Estudiante buscarMateriasestudiante(String codigodelamateria , String codigoestudiante){
  50.        Estudiante e = null;
  51.        for(Estudiante estudiante : estudiantes){
  52.           if ( estudiante.getCodigoestudiante().equalsIgnoreCase(codigoestudiante))
  53.           {
  54.              for ( int i=0; i<estudiante.getMateriasdelestudiante().size(); i++ )
  55.               {
  56.                if(codigodelamateria.equalsIgnoreCase(estudiante.getMateriasdelestudiante().get(i)) )
  57.                      {
  58.                         e = estudiante;      
  59.                      }
  60.               }  
  61.           }
  62.  
  63.              
  64.        }
  65.  
  66.     return e;
  67.        }
  68.        
  69.      public Estudiante buscarMateriasestudiantebase(String codigodelamateria){
  70.        Estudiante e = null;
  71.        for(Estudiante estudiante : estudiantes){
  72.          for ( int i=0; i<estudiante.getMateriasdelestudiante().size(); i++ )
  73.             {
  74.                if(codigodelamateria.equalsIgnoreCase(estudiante.getMateriasdelestudiante().get(i)) )
  75.                      {
  76.                         e = estudiante;      
  77.                      }
  78.               }            
  79.        }
  80.     return e;
  81.        }
  82.        
  83.        public Docente buscarMateriasdocente(String codigodelamateria , String codigodocente){
  84.        Docente d = null;
  85.        for(Docente docente : docentes){
  86.           if ( docente.getCodigodocente().equalsIgnoreCase(codigodocente))
  87.           {
  88.              for ( int i=0; i<docente.getMateriasdeldocente().size(); i++ )
  89.               {
  90.                if(codigodelamateria.equalsIgnoreCase(docente.getMateriasdeldocente().get(i)) )
  91.                      {
  92.                         d = docente;      
  93.                      }
  94.               }  
  95.           }      
  96.        }
  97.     return d;
  98.        }
  99.    
  100.    
  101.    
  102.     DefaultTableModel model;
  103.    
  104.    
  105.     int filas1 = 0;
  106.     int filas = 0;
  107.  
  108.    
  109.    
  110.     /**
  111.      * Creates new form MateriaDialogo
  112.      */
  113.     public AgregarNotasEstudianteDialogo(javax.swing.JDialog parent, boolean modal) {
  114.         super(parent, modal);
  115.         initComponents();
  116.         this.setLocationRelativeTo(null);
  117.     }

Aqui va la parte gráfica que he omitido. Siguen los botones,

Botón BuscarMateria

Nota: Este botón busca la materia que el docente ha matriculado y que el estudiante también matriculó, para así luego imprimir los estudiantes a los que se les va a ingresar las notas

Código Javascript:
Ver original
  1. private void botonbuscarmateriaActionPerformed(java.awt.event.ActionEvent evt) {                                                  
  2. /// Buscar estudiantes registrados en la materia ///
  3.          if(!(this.txtCodigodocente.getText().trim().isEmpty()))
  4.         {
  5.            
  6.            Docente d = buscarMateriasdocente(this.txtCodigomateria.getText().trim() , this.txtCodigodocente.getText().trim());          
  7.            Estudiante e = buscarMateriasestudiantebase(this.txtCodigomateria.getText().trim());
  8.            Materia m = buscarMateria(this.txtCodigomateria.getText().trim());
  9.             if(m==null){
  10.                 JOptionPane.showMessageDialog(this,
  11.                 "La Materia no se encuentra registrada en la Universidad",
  12.                 "Agregar Materias a un Docente", JOptionPane.ERROR_MESSAGE);
  13.                 this.txtCodigomateria.setText(null);
  14.                 this.txtCodigomateria.requestFocus();
  15.              }
  16.            
  17.             else{    
  18.                               for(Materia materia : materias)
  19.                                  {
  20.                                     if ( materia.getCodigomateria().equalsIgnoreCase(this.txtCodigomateria.getText().trim()))
  21.                                       {
  22.                                           if ( d!=null && e!=null )
  23.                                           {
  24.                                              this.txtCodigoestudiante.requestFocus();  
  25.                                                // Registrar datos en la tabla
  26.                                                model=(DefaultTableModel)this.jTablaestudiantesmateria.getModel();
  27.                                                Object fila[] = new Object[3];
  28.                                                fila[0] = e.getCodigoestudiante();
  29.                                                fila[1] = e.getNombreestudiante();
  30.                                                fila[2] = e.getApellidoestudiante();
  31.                                                model.addRow(fila);
  32.                                                jTablaestudiantesmateria.setModel(model);        
  33.                                            }
  34.                                            filas++;
  35.                                              
  36.                                           }
  37.                                    }        
  38.             }    
  39.           }
  40.     }
  #18 (permalink)  
Antiguo 22/04/2013, 17:20
 
Fecha de Ingreso: septiembre-2008
Mensajes: 221
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: ¿Cómo hacer funcionar dos JTable?

Este es el código de AgregarMateriasEstudianteDialogo:

Código Javascript:
Ver original
  1. package universidad_grafica;
  2.  
  3.  
  4. import java.util.List;
  5. import javax.swing.JOptionPane;
  6. import javax.swing.table.DefaultTableModel;
  7.  
  8. public class AgregarMateriasEstudianteDialogo extends javax.swing.JDialog {
  9.  
  10.     private List<Docente>    docentes = null;
  11.     private List<Materia>    materias = null;
  12.     private List<Estudiante> estudiantes = null;
  13.    
  14.  
  15.     public List<Docente> getDocentes(){ return docentes; }
  16.     public void setDocentes(List<Docente> docentes){ this.docentes = docentes;}
  17.    
  18.     public List<Materia> getMaterias(){ return materias; }
  19.     public void setMaterias(List<Materia> materias){ this.materias = materias;}
  20.    
  21.     public List<Estudiante> getEstudiantes(){ return estudiantes; }
  22.     public void setEstudiantes(List<Estudiante> estudiantes){ this.estudiantes = estudiantes;}
  23.    
  24.     public Estudiante buscarEstudiante(String codigo){  // Buscador auxiliar para Docentes
  25.        Estudiante e = null;
  26.        for(Estudiante estudiante : estudiantes){
  27.               if(codigo.equalsIgnoreCase(estudiante.getCodigoestudiante())){
  28.                      e = estudiante;
  29.                    
  30.                }
  31.        }
  32.  
  33.     return e;
  34.        }
  35.    
  36.      public Materia buscarMateria(String codigodelamateria){  // Buscador auxiliar para Materias
  37.        Materia m = null;
  38.        for(Materia materia : materias){
  39.               if(codigodelamateria.equalsIgnoreCase(materia.getCodigomateria())){
  40.                      m = materia;
  41.                    
  42.                }
  43.        }
  44.  
  45.     return m;
  46.        }
  47.    
  48.        public Estudiante buscarMateriasestudiante(String codigodelamateria , String codigoestudiante){
  49.        Estudiante e = null;
  50.        for(Estudiante estudiante : estudiantes){
  51.           if ( estudiante.getCodigoestudiante().equalsIgnoreCase(codigoestudiante))
  52.           {
  53.              for ( int i=0; i<estudiante.getMateriasdelestudiante().size(); i++ )
  54.               {
  55.                if(codigodelamateria.equalsIgnoreCase(estudiante.getMateriasdelestudiante().get(i)) )
  56.                      {
  57.                         e = estudiante;      
  58.                      }
  59.               }  
  60.           }
  61.  
  62.              
  63.        }
  64.  
  65.     return e;
  66.        }
  67.    
  68.    
  69.    
  70.     DefaultTableModel model;
  71.    
  72.    
  73.     int filas1 = 0;
  74.     int filas = 0;
  75.  
  76.    
  77.    
  78.     /**
  79.      * Creates new form MateriaDialogo
  80.      */
  81.     public AgregarMateriasEstudianteDialogo(javax.swing.JDialog parent, boolean modal) {
  82.         super(parent, modal);
  83.         initComponents();
  84.         this.setLocationRelativeTo(null);
  85.        
  86.        
  87.          
  88.        
  89.     }

Botón para agregar Materiasalestudiante

Código Javascript:
Ver original
  1. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
  2.  
  3.              
  4.         if(!(this.txtCodigoestudiante.getText().trim().isEmpty()))
  5.         {
  6.             int identificador = 0;
  7.             Estudiante e = buscarMateriasestudiante(this.txtCodigomateria.getText().trim(), this.txtCodigoestudiante.getText().trim());
  8.             if(e!=null){
  9.                 identificador = 1;
  10.                 JOptionPane.showMessageDialog(this,
  11.                 "La Materia ya ha sido ingresada para el estudiante",
  12.                 "Agregar Materias a un Estudiante", JOptionPane.ERROR_MESSAGE);
  13.              }
  14.            
  15.            Materia m = buscarMateria(this.txtCodigomateria.getText().trim());
  16.             if(m==null){
  17.                 JOptionPane.showMessageDialog(this,
  18.                 "La Materia no se encuentra registrada en la Universidad",
  19.                 "Agregar Materias a un Estudiante", JOptionPane.ERROR_MESSAGE);
  20.                 this.txtCodigomateria.setText(null);
  21.                 this.txtCodigomateria.requestFocus();
  22.              }
  23.            
  24.             else{
  25.                
  26.                 for ( Estudiante estudiante : estudiantes )
  27.                 {
  28.                   if ( identificador == 1)
  29.                     {
  30.                         break;
  31.                     }
  32.                  
  33.                     if ( estudiante.getNombreestudiante().equalsIgnoreCase(this.txtNombreestudiante.getText().trim()))
  34.                     {    
  35.                               for(Materia materia : materias)
  36.                                  {
  37.                                      
  38.  
  39.                                     if ( materia.getCodigomateria().equalsIgnoreCase(this.txtCodigomateria.getText().trim()))
  40.                                       {
  41.                                         this.txtCodigomateria.setText(null);
  42.                                         this.txtCodigomateria.requestFocus();  
  43.                                         estudiante.setMateriadelestudiante(materia.getCodigomateria());  
  44.                                         // Registrar datos en la tabla
  45.                                         model=(DefaultTableModel)this.jTable1.getModel();
  46.                                         Object fila[] = new Object[3];
  47.                                         fila[0] = materia.getCodigomateria();
  48.                                         fila[1] = materia.getNombremateria();
  49.                                         fila[2] = materia.getCreditos();
  50.                                         model.addRow(fila);
  51.  
  52.                                         jTable1.setModel(model);        
  53.                                       }
  54.                                       filas++;        
  55.                                    }    
  56.                            
  57.                      }
  58.    
  59.                 }      
  60.             }
  61.            
  62.            
  63.                  
  64.                  
  65.           }
  66.        
  67.     }

Gracias por tu ayuda!!
Saludos!!!

PD: Mañana tengo la habilitación....espero pasar la materia....hoy tuve el parcial y por un sólo error de código saqué 2.0 Bueno, Mañana lo intentaré una vez más :D

Etiquetas: clase, funcionar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:50.