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

Consulta JTable

Estas en el tema de Consulta JTable en el foro de Java en Foros del Web. Otra pregunta. Estoy construyendo una tabla (JTable) a partir de una matriz así: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Java: Ver original package formularios ; import javax.swing.table.* ; ...
  #1 (permalink)  
Antiguo 14/10/2013, 08:31
 
Fecha de Ingreso: agosto-2011
Mensajes: 100
Antigüedad: 12 años, 8 meses
Puntos: 1
Pregunta Consulta JTable

Otra pregunta.

Estoy construyendo una tabla (JTable) a partir de una matriz así:

Código Java:
Ver original
  1. package formularios;
  2. import javax.swing.table.*;
  3.  
  4. public class FormularioTrabajador extends javax.swing.JFrame {
  5.     String trabajador[][] = new String[10][5];
  6.  
  7. public FormularioTrabajador() {
  8.         initComponents();
  9.         construirTabla();
  10.         listarDatos();
  11. }
  12.  
  13. private void construirTabla(){
  14.         String titulos[] = {"Rut","Nombre","Ciudad","Sueldo"};
  15.         tabla.setColumnIdentifiers(titulos);
  16.         jtabla.setModel(tabla);
  17. }
  18.  
  19. private void listarDatos(){
  20.         for(int i=0;i<trabajador.length;i++){
  21.             tabla.addRow(trabajador[i]);
  22.         }
  23. }
  24.  
  25. }

Acorté el código donde están los action de los botones y el llenado de la matriz "trabajador"... ejecuto y me doy cuenta de que a medida que voy registrando y después apretando el botón listar, la tabla no se genera de nuevo, es decir, si registré 1 dato, listo, la tabla muestra 10 espacios y 1 con los datos del primer registro... si registro otro dato, listo, la tabla ahora muestra 10 espacios más (o sea, 20) en donde veo primero el registro solo, y después de 10 espacios en blanco, veo 2 registros (el primero y el segundo).... y así por el estilo.

¿Hay una manera más eficiente de desarrollar la tabla?

Última edición por Feligo; 14/10/2013 a las 08:38
  #2 (permalink)  
Antiguo 19/10/2013, 14:25
Avatar de fahs82  
Fecha de Ingreso: abril-2012
Ubicación: guadalajara
Mensajes: 139
Antigüedad: 12 años
Puntos: 12
Respuesta: Consulta JTable

bueno te paso el código que le puse de ejemplo a otro colega de como llenar la table , noto algo muy enredoso tantos pasos para poblar la tabla y la forma en que estas declarando el tablemodel , en resumen yo crearía el código de la siguiente manera

Código:
public class FormularioTrabajador extends javax.swing.JFrame {
DefaultTableModel Tabla;

public FormularioTrabajador(){
  initComponents();
   
   CargarTabla();
  
  
}
  
   public void CargarTabla(){
   String titulos[] = {"Rut","Nombre","Ciudad","Sueldo"};
   Tabla = new DefaultTableModel(null,titulos);
        //aquí agregar tu arreglo , aunque no comprendo de donde sacas la información para crear el array ni el porque le estas asigando ese espacio de 5 y 10 , creo que aquí viene el punto a aclarar para comprender lo que sucede pues según creo eso provoca se agrege el renglón de la manera que describes al recorrer el bucle
   for(){
   tabla.addRow
     }

   jtable.setModel(tabla);

    }



}

a continuación te posteo el código de como lo haría con una consulta a una base de datos para que te des una idea de como lo hago yo en el ciclo o bucle de la consulta

Código:
  try{
 // estas son las cabeceras que van en el tablemodel
  String [] titulos = {"NOMBRE","APELLIDO"};
// creamos el arreglo que serán los rows que iremos pasando al modelo de la tabla
String [] registro = new String [2];
 // Creamos el modelo de la tabla y le pasamos el primer parámetro de entrada que son las cabeceras
mdlPersonas = new DefaultTableModel(null,titulos);

//realizamos la consulta 
  Statement stConsulta = cn.CreateStatement();
  ResultSet rsPersonas = stConsulta.executeQuery(select NOMBRE,APELLIDO from PERSONAS);
   while(rsPersonas.next()){
      //definimos el contenido del arreglo y lo agregamos al modelo de tabla
      registro [0] = rsPersonas.getString("NOMBRE");
      registro [1] = rsPersonas.getString("APELLIDO");
     mdlPersonas.addRow(registro);

   }
  // al terminar le asignamos el modelo al jtable
tblPersonas.setModel(mdlPersonas);

}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,e);
}
 finally{
//cerramos la conexion
cn.close
}

Etiquetas: jtable, string
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 15:09.