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

JTable con TableModel y Classes

Estas en el tema de JTable con TableModel y Classes en el foro de Java en Foros del Web. Hola a todos! Les cuento, estube viendo en Internet varios ejemplos de JTable con TableModels, hice uno y funcionó a la perfección. Ahora quiero hacer ...
  #1 (permalink)  
Antiguo 25/06/2007, 08:25
Avatar de SeriketZu  
Fecha de Ingreso: septiembre-2006
Ubicación: Mendoza, Argentina
Mensajes: 78
Antigüedad: 17 años, 7 meses
Puntos: 0
JTable con TableModel y Classes

Hola a todos!
Les cuento, estube viendo en Internet varios ejemplos de JTable con TableModels, hice uno y funcionó a la perfección. Ahora quiero hacer uno más complejo y los vectores se llenan, pero los datos no aparecen en pantalla

Paso a explicar... primero las clases:

Código:
public class Actividad {
  private int nro;
  private Date fechaEstimada;
  private Date fechaReal;
  private Operador operadorEncargado;
  private Vector ayudantes; //Vector de objetos Operador
  private Máquina máquina;
  private byte prioridad;
  private byte estado;
  private String notas;
  private Vector trabajos; //Vector de objetos Trabajo
}

public class Operador {
  private int id;
  private String nombre;
  private String login;
  private String password;
}

public class Trabajo {
  private int nro;
  private Parte parte;
  private byte estado;
  private String notas;
  private Vector mantenimientos; //Vector de objetos MantenimientoXTrab
}

public class MantenimientoXTrab {
  private int nro;
  private int id;
  private String nombre;
  private String descripción;
  private int duraciónEstimada;
  private int duraciónReal;
  private Vector herramientas; //Vector de objetos Herramienta
  private Vector componentes; //Vector de objetos ComponenteXCant
}

public class Herramienta {
  private int id;
  private String nombre;
  private String descripción;
  private int stock;
}

public class ComponenteXCant{
  private int id;
  private String nombre;
  private String descripción;
  private int stock;
  private int cantidad;
}
Para llenar 3 JTables, uso 3 TableModel:
  • jTableOrden <-- TablaActividades
  • jTableActividad <-- TablaTrabajos
  • jTableTrabajo <-- TablaMantenimientos

Código:
public class TablaActividades extends AbstractTableModel {
  
  private String columnas[];
  private Vector datos = new Vector();
  
  public TablaActividades() {
    establecerColumnas();
  }
  
  private void establecerColumnas(){
    columnas = new String[6];
    columnas[0] = "Nro";
    columnas[1] = "Máquina";
    columnas[2] = "FechaInicio";
    columnas[3] = "OperadorEncargado";
    columnas[4] = "Prioridad";
    columnas[5] = "Notas";
  }

....
}

public class TablaTrabajos extends AbstractTableModel {
  
  private String columnas[];
  //private LinkedList datos = new LinkedList();
  private Vector datos = new Vector();
  
  public TablaTrabajos() {
    establecerColumnas();
  }
  
  private void establecerColumnas(){
    columnas = new String[5];
    columnas[0] = "Nro";
    columnas[1] = "Parte";
    columnas[2] = "FechaInicio";
    columnas[3] = "DuraciónTotal";
    columnas[4] = "Notas";
  }

....
}

public class TablaMantenimientos extends AbstractTableModel {
  
  private String columnas[];
  //private LinkedList datos = new LinkedList();
  private Vector datos = new Vector();
  
  public TablaMantenimientos() {
    establecerColumnas();
  }
  
  private void establecerColumnas(){
    columnas = new String[5];
    columnas[0] = "Nro";
    columnas[1] = "Mantenimiento";
    columnas[2] = "DuraciónEstimada";
    columnas[3] = "Herramientas";
    columnas[4] = "Componentes";  
  }

....
}
Una vez que he completado los vectores, los asigno a los TableModel correspondientes y asigno estos a sus respectivos jTable pero no logro visalizar los datos... ¿Cómo puedo hacer para indicar qué dato mostrar en cada columna para que de esta manera los muestre en pantalla?

Código:
    tablaActividades = new TablaActividades();
    tablaTrabajos = new TablaTrabajos();
    tablaMantenimientos = new TablaMantenimientos();
    tablaActividades.setDatos(vectorActividades);
    tablaTrabajos.setDatos(vectorActividades.getVectorTrabajos());
    tablaMantenimientos.setDatos(vectorActividades.getVectorTrabajos().getVectorMantenimientos());
    jTableOrden.setModel(tablaActividades);
    jTableActividad.setModel(tablaTrabajos);
    jTableTrabajo.setModel(tablaMantenimientos);
Gracias, saludos.
  #2 (permalink)  
Antiguo 26/06/2007, 07:58
Avatar de SeriketZu  
Fecha de Ingreso: septiembre-2006
Ubicación: Mendoza, Argentina
Mensajes: 78
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: JTable con TableModel y Classes

....nadie?
  #3 (permalink)  
Antiguo 26/06/2007, 10:35
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: JTable con TableModel y Classes

Con trozos de codigo parciales, sin diagnóstico de errores, ni saber lo que has intentado y lo que no, es difícil que nadie pueda ayudarte.

Si tienes unos ejemplos que te funcionan, en vez de intentar 3 modelos nuevos de golpe, te recomendaría empezar de un ejemplo que te funcione e ir haciendo modificaciones poco a poco para que vayas entendiendo que hace cada cosa hasta dejarlo como quieres... y luego con otro... y con otro.

De un ejemplo a tres modelos propios totalmente diferentes es como un salto mortal triple sin red.

S!
  #4 (permalink)  
Antiguo 26/06/2007, 12:12
Avatar de pyanqn  
Fecha de Ingreso: noviembre-2005
Mensajes: 331
Antigüedad: 18 años, 5 meses
Puntos: 8
Re: JTable con TableModel y Classes

prueba hacer para la JTable a;

a.updateUI();

Esto hace que se actualice la vista con el modelo subyacente!!!
  #5 (permalink)  
Antiguo 26/06/2007, 16:44
Avatar de SeriketZu  
Fecha de Ingreso: septiembre-2006
Ubicación: Mendoza, Argentina
Mensajes: 78
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: JTable con TableModel y Classes

Cita:
Iniciado por GreenEyed Ver Mensaje
Con trozos de codigo parciales, sin diagnóstico de errores, ni saber lo que has intentado y lo que no, es difícil que nadie pueda ayudarte.

Si tienes unos ejemplos que te funcionan, en vez de intentar 3 modelos nuevos de golpe, te recomendaría empezar de un ejemplo que te funcione e ir haciendo modificaciones poco a poco para que vayas entendiendo que hace cada cosa hasta dejarlo como quieres... y luego con otro... y con otro.

De un ejemplo a tres modelos propios totalmente diferentes es como un salto mortal triple sin red.

S!
ehhh no te voy a escribir todo, es mucho, puse eso porque con eso alcanza.
Errores no da, solo que no muestra nada en el JTable (pero si se llena el vector). Lo que he intentado lo he redactado arriba. Lo que no he intentado no lo puedo poner pues no lo he intentado pues no lo se.
Como puse arriba, probe con un ejemplo antes y funcionó. Cambié varias cosas y funcionó, luego cambié el contenido del vector (antes tenia todos objetos Persona por dar un ejemplo) y no muestra en el JTable.

pyanqn eso no lo sabía, voy a intentar, pero no se si funcionará. Ya que probé volver a asignarle el tablemodel al jtable e igual no muestra.
  #6 (permalink)  
Antiguo 27/06/2007, 00:27
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: JTable con TableModel y Classes

Cita:
Iniciado por SeriketZu Ver Mensaje
puse eso porque con eso alcanza.
Si tu lo dices.
Suerte.
  #7 (permalink)  
Antiguo 28/06/2007, 09:38
Avatar de SeriketZu  
Fecha de Ingreso: septiembre-2006
Ubicación: Mendoza, Argentina
Mensajes: 78
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: JTable con TableModel y Classes

JTable jTableMantenimientos = new JTable();
TablaMantenimientos tablaMantenimientos = new TablaMantenimientos();
MantenimientoXTrab mant1 = new MantenimientoXTrab;
MantenimientoXTrab mant2 = new MantenimientoXTrab;
mant1.addHerramienta(new Herramienta());
mant2.addComponente(new ComponenteXCant());
tablaMantenimientos.addItem(mant1);
tablaMantenimientos.addItem(mant2);
jTableMantenimientos.setModel(tablaMantenimientos) ;

con eso no alcanza? el problema es que después de hacer esto (o lo mismo pero con las otras 2 tablas, y obviamente con objetos no vacíos sino cargados con datos) el vector de tablaMantenimientos contiene los objetos correspondientes pero el jTableMantenimientos no los muestra.

pyanqn no funcionó eso, según veo el problema es que no sabe cómo vincular las variables y objetos del vector del table model con cada columna del jTable.... alguien sabe cómo hacer esto?

Gracias.
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 14:14.