Java - Aumentar una fila al JTable en tiempo de ejecucion

   
Vista:

Aumentar una fila al JTable en tiempo de ejecucion

Publicado por Ricardo Garcia (15 intervenciones) el 20/02/2009 00:09:45
Un saludo a todos, tengo un problema que ya me lleva bastante tiempo, el asunto es el siguiente:

Utilizo NetBeans, y necesito aumentar una fila al JTable que muestra mis datos en tiempo de ejecución, pero no he podido encontrar una respuesta adecuada a mi necesidad. Les describo el proceso que estoy siguiendo.

Estoy cargando unos datos desde una base de datos a un Jtable utilizo las siguientes funciones:

public ArrayList HacerConsulta(String CadenaSql){
int campos;
int columnas;
formulario.clear();
Conexion Conex=null;
try{
Conex = new Conexion();
Conex.conectar();
String cadena=CadenaSql;
ResultSetMetaData Datos;
conjuntoResultados = Conex.consultaSQL.executeQuery(cadena);
Datos = conjuntoResultados.getMetaData();
while (conjuntoResultados.next()){
campos = Datos.getColumnCount();
ArrayList x = new ArrayList();
x.clear();
for (columnas=1;columnas<=campos;columnas++){
x.add (conjuntoResultados.getString(columnas).toString());
}
formulario.add(x);
}
}catch(SQLException e){MANEJO DE EXCEPCIONES ETC ETC}
return formulario;

}

Esta funcion me saca lo que quiera de la BD y accedo a esta funcion mediante la siguiente:

public void CargarFormulario(String cadena, JTable vObjeto,int total){
ArrayList x = new ArrayList();
Vector saurio=new Vector();
int i=0;
x.clear();
x = HacerConsulta(cadena);

for(int j = 0;j < x.size(); j++) {
vObjeto.setValueAt(i+1, i, 0);
for (int campos = 1; campos<=total;campos++){
vObjeto.setValueAt(((ArrayList)x.get(j)).get(campos-1).toString(), i, campos);//nombre completo
}
i++;
}
}

Con esta ultima funcion yo cargo directamente el ArrayList que me devuelve la anterior funcion (HacerConsulta) y la coloco al JTABLE, me funciona bien, saca los datos todo perfecto. El problema es que al utilizar NetBeans y crear mis pantallas prediseñadas necesito sacar el numero de registros que devuelve mi consulta.[ x.size() ] y segun este numero dimensionar el numero de filas del JTable ya creado. No quiero crear mi tabla con el: tabla = new JTable();. sino en tiempo de ejecucion, quiero poder modificar el numero de filas.

Porfavor les agradezco de antemano cualquier ayuda o sugerencia.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Aumentar una fila al JTable en tiempo de ejecuc

Publicado por Danilo Juvinao (278 intervenciones) el 20/02/2009 16:53:12
DefaultTableModel model = miJTable.getModel();
int columns = modelo.getColumnCount();
modelo.addRow(new Object[columns]);
miJTable.setModel(model);

Este codigo debe servirte para este proposito. no pude probarlo antes de enviartelo, lo saque de la cabeza, entonces puede que tenga algun error de escritura, pero esa es la forma como yo lo haría.

exitos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Aumentar una fila al JTable en tiempo de ejecuc

Publicado por Ricardo Garcia Tellez (7 intervenciones) el 21/02/2009 00:27:23
Muchiiisimas gracias luego de los cambios obligatorios funcinó a la perfeccion, puedo aumentar las filas en tiempo de ejecucion.

Estuve meses queriendo que algun amigo me diera la solucion, pero ninguno fue capaz, gracias !!!!

Para futuras preguntas al respecto el codigo completo mas las correciones es:

public void CargarFormulario(String cadena, JTable vObjeto,int total){
ArrayList x = new ArrayList();

int i=0;
DefaultTableModel modelo = (DefaultTableModel)vObjeto.getModel();
int columns = modelo.getColumnCount();

x.clear();
x = HacerConsulta(cadena);


for(int j = 0;j < x.size(); j++) {
modelo.addRow(new Object[columns]);
vObjeto.setModel(modelo);
vObjeto.setValueAt(i+1, i, 0);
for (int campos = 1; campos<=total;campos++){
vObjeto.setValueAt(((ArrayList)x.get(j)).get(campos-1).toString(), i, campos);//nombre completo
}
i++;
}




}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar