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