Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/12/2010, 09:23
Avatar de valdo_kof
valdo_kof
 
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 15 años, 3 meses
Puntos: 16
Pregunta ayuda con tabla dinamica

tengo una consulta en un base de datos que me trae unos campos parecidos a esta tabla

id nombre telefono
1 juan 12123
2 beto 36368
3 pepe
4 lupe 45343

cuando genero mi jtable dinamico si me pone la tabla tal cual como la muestro, uso este codigo

Código:
DefaultTableModel modelotable = new DefaultTableModel() {

@Override
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}

@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
};
para declarar mi modelo de la tabla

para que mi codigo me ponga los encabezados id, nombre y telefono lo hago mediante una consulta y realizo el ciclo

Código:
while (rs.next()) {
if(band==false){///esta linea la ocupo para que solo me recorra la consulta y me genere mis encabezados 

id=rs.getString("id");
nombre=rs.getString("nombre");
telefono=rs.getString("telefono");

modelotable.addColumn("ID");//asigno a mi columna el encabezado que mostrara
  count2=count2+1; 

//la idea es q si todos los valores de una de mis columnas 
//son espacios en blanco no me muestre ese encabezado

     if(               !nombre.equals(" ")){
      count2=count2+1;
  modelotable.addColumn("nombre");
  }
  if(               !telefono.equals(" ")){
      count2=count2+1;
modelotable.addColumn("telefono");
  }
}
jTable1.setModel(modelotable);//le agrego las columnas a mi jtable

Object[] linea = new Object[count2]; 
linea[count] ="0000"+ rs.getObject("id_rel_etiqueta");

 count=count+1;
 if(           !nombre.equals(" ")){
      linea[count] = rs.getObject("nombre");
      count=count+1;
 }
 if(            !telefono.equals(" ")){
     linea[count] = rs.getObject("telefono");
     count=count+1;
   }
modelotable.addRow(linea);//agrego mis filas a  modelo table
jTable1.setModel(modelotable);//inserto las filas en mi jtable
}
este funciona siempre y cuando el primer registro de la tabla que puse contenga un valor, si mi consulta me muestra esto

id nombre telefono
1 juan
2 beto 36368
3 pepe
4 lupe 45343

mi programa en java me va a mostrar

id nombre
1 juan
2 beto
3 pepe
4 lupe

aunq el nombre beto y lupe contengan telefono

como puedo hacer para que me respete los espacios en blanco si es q por lo menos un registro contiene valor?


lo de arriba es solo un ejemplo para que resulte mas facil de comprender o por lo menos eso intente

anexo mi codigo original

Código:
modelotable.setColumnCount(0);
modelotable.setRowCount(0);
  count=0;
  count2=0;
et=     (String) jComboBox1.getSelectedItem();
band=false;
try {
        Class.forName("com.mysql.jdbc.Driver");
            conexion = DriverManager.getConnection("jdbc:mysql://localhost/etiquetas", "root", "");
             st = conexion.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
             rs = st.executeQuery("");//mi consulta
             while (rs.next()) {
                    if(band==false){
  pap=rs.getString("id_rel_pa_et");
  item=rs.getString("item");
  desc=rs.getString("descripcion");
  desc_f=rs.getString("descripcion_f");
  desc_esp=rs.getString("descripcion_esp");
  qty=rs.getString("qty");
  cus=rs.getString("customer_num");
  cust_n=rs.getString("customer_name");
  sup=rs.getString("suplier");
  country=rs.getString("country_origin");
  bc=rs.getString("codigo_barras");
   country2=rs.getString("country2");
  iden=rs.getString("identifier");
  rev=rs.getString("revision");
  code=rs.getString("code");
  dig=rs.getString("digit");
  gr=rs.getString("grupo");
  let=rs.getString("letra");
 id_rel=rs.getInt("id_relacion");
 
 Class.forName("com.mysql.jdbc.Driver");
            conexion2 = DriverManager.getConnection("jdbc:mysql://localhost/etiquetas", "root", "");
             st2 = conexion2.createStatement();
             rs2 = st2.executeQuery("");//mi consulta
             rs2.first();            
             rel=rs2.getString("relacion");
             st2.close();
  //agregar colums
  modelotable.addColumn("ID");
  count2=count2+1;
   if(               !let.equals(" ")){
      count2=count2+1;
  modelotable.addColumn("ITEM");
 }

  if(               !item.equals(" ")){
      count2=count2+1;
  modelotable.addColumn("ITEM_NO");
  }
  if(               !desc.equals(" ")){
      count2=count2+1;
modelotable.addColumn("DESCRIPCIÓN");
  }
  if(               !desc_f.equals(" ")){
      count2=count2+1;
modelotable.addColumn("DESCRIPCIÓN FRANCES");
  }
  if(               !desc_esp.equals(" ")){
      count2=count2+1;
modelotable.addColumn("DESCRIPCIÓN ESPAÑOL");
  }
  if(               !qty.equals(" ")){
      count2=count2+1;
   modelotable.addColumn("qty");
  }
  if(               !cus.equals(" ")){
      count2=count2+1;
  modelotable.addColumn("CUSTOMER_NO");
  }
  if(               !cust_n.equals(" ")){
      count2=count2+1;
 modelotable.addColumn("CUSTOMER NAME");
  }
  if(               !sup.equals(" ")){
      count2=count2+1;
  modelotable.addColumn("SUPLIER");
  }
  if(               !country.equals(" ")){
      count2=count2+1;
   modelotable.addColumn("COUNTRY_OF_ORIGIN");
  }
  if(               !bc.equals(" ")){
      count2=count2+1;
  modelotable.addColumn("Barcode");
  }   
  if(               !country2.equals(" ")){
      count2=count2+1;
  modelotable.addColumn("COUNTRY");
 }
  if(               !iden.equals(" ")){
      count2=count2+1;
  modelotable.addColumn("IDENTIFIER");
 }
  if(               !rev.equals(" ")){
      count2=count2+1;
  modelotable.addColumn("REVISION");
}
  if(               !code.equals(" ")){
      count2=count2+1;
  modelotable.addColumn("CODE");
}
  if(               !dig.equals(" ")){
      count2=count2+1;
  modelotable.addColumn("DIGIT");
  }
  if(               !gr.equals(" ")){
      count2=count2+1;
  modelotable.addColumn("GRUPO");
  }
 
  if(               !rel.equals(" ")){
      count2=count2+1;
  modelotable.addColumn("RELACION");
  }
  jTable1.setModel(modelotable);
                   band=true; }
  id_rel=rs.getInt("id_relacion");
 Class.forName("com.mysql.jdbc.Driver");
            conexion2 = DriverManager.getConnection("jdbc:mysql://localhost/etiquetas", "root", "");
             st2 = conexion2.createStatement();
             rs2 = st2.executeQuery("");//mi consulta
             rs2.first();
             rel=rs2.getString("relacion");
             st2.close();
//agregar rows
 Object[] linea = new Object[count2];

linea[count] ="0000"+ rs.getObject("id_rel_etiqueta");

 count=count+1;
 if(           !let.equals(" ")){
      linea[count] = rs.getObject("letra");
      count=count+1;
 }
 if(            !item.equals(" ")){
     linea[count] = rs.getObject("item");
     count=count+1;
   }
  if(           !desc.equals(" ")){
       linea[count] = rs.getObject("descripcion");
       count=count+1;
  }
  if(           !desc_f.equals(" ")){
       linea[count] = rs.getObject("descripcion_f");
       count=count+1;
  }
  if(           !desc_esp.equals(" ")){
       linea[count] = rs.getObject("descripcion_esp");
       count=count+1;
  }
  if(           !qty.equals(" ")){
      linea[count] = rs.getObject("qty");
      count=count+1;
     }
  if(           !cus.equals(" ")){
      linea[count] = rs.getObject("customer_num");
       count=count+1;
  }
  if(           !cust_n.equals(" ")){
      linea[count] = rs.getObject("customer_name");
      count=count+1;
  }
  if(           !sup.equals(" ")){
      linea[count] = rs.getObject("suplier");
        count=count+1;
  }
  if(           !country.equals(" ")){
      linea[count] = rs.getObject("country_origin");
      count=count+1;
  }
  if(           !bc.equals(" ")){
      linea[count] = rs.getObject("codigo_barras");
      count=count+1;
  }
 
  if(           !country2.equals(" ")){
      linea[count] = rs.getObject("country2");
       count=count+1;
 }
  if(           !iden.equals(" ")){
      linea[count] = rs.getObject("identifier");
      count=count+1;
 }
  if(           !rev.equals(" ")){
      linea[count] = rs.getObject("revision");
        count=count+1;
}
  if(           !code.equals(" ")){

      linea[count] = rs.getObject("code");
      count=count+1;
}
  if(           !dig.equals(" ")){
      linea[count] = rs.getObject("digit");
      count=count+1;
  }
  if(           !gr.equals(" ")){
      linea[count] = rs.getObject("grupo");
        count=count+1;
  }  
  if(           !rel.equals(" ")){
      linea[count] = rel;
       count=count+1;
  }
modelotable.addRow(linea);
jTable1.setModel(modelotable);
count=0;
            }st.close();
             jButton6.setEnabled(false);
                         jButton3.setEnabled(false);
               } catch (SQLException ex) {
            Logger.getLogger(datos_et.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(datos_et.class.getName()).log(Level.SEVERE, null, ex);
        }
si alguien puede ayudarme se lo agradecere infinitamente

gracias