Bueno dias a todos, les comento mi situacion, tengo una app con un jtable el cual tiene una lista de clientes que traigo desde un ResultSet, ademas tengo un campo de busqueda por apellidos y nombre, lo que quiero hacer es que a medida que va escribiendo el apellido vaya filtrando y actualizandome el JTable, de igual forma cuando se activa la ventana quiero que se cargue con la totalidad de los clientes.
El inconveniente esta en que logue hacer que ejecute todo cuando busco y cuando se activa la ventana(a continuacion detallo los eventos donde ejecuta). El problema es que no me actualiza el jtable. En el unico momento en que se carga el jtable es cuando llamo el metodo(funcion que carga el jtable) desde el "void main", para todo lo demas que probe, nada. A continuacion pongo el codigo del metodo y desde donde lo llamo:
----------Metodo que carga el jtable----------------------------------
public void tablacli() throws SQLException{
Control.Filtro result = new Control.Filtro();
DefaultTableModel modelo = new DefaultTableModel();
this.tblclientes.setModel(modelo);
int vcantcol, vcantobj = 0, vcantfila = 0;
rs = result.tablacli("", txtnombre.getText(), txtapellido.getText());
ResultSetMetaData rsMd = (ResultSetMetaData) rs.getMetaData();
// Limpio el jtable
vcantfila = modelo.getRowCount();
for (int i = 0;vcantfila>i; i++) {
modelo.removeRow(i);
modelo.fireTableRowsDeleted(i, i);
}
//Cargo los encabezados de las columnas
vcantcol = rsMd.getColumnCount();
for (int i = 1; i <= vcantcol; i++) {
modelo.addColumn(rsMd.getColumnLabel(i));
}
//Creando las filas para el JTable
while (rs.next()) {
vcantobj = vcantobj + 1;
Object[] fila = new Object[vcantcol];
for (int i = 0; i < vcantcol; i++) {
fila[i]=rs.getObject(i+1);
}//fin for
modelo.addRow(fila);
modelo.fireTableRowsInserted(0, vcantcol);
} // fin while
if (vcantobj < 1){
logger.info("No hay clientes que coincidan con la busqueda");
}//End if vcantobj < 1
rs.close();
logger.info("Cantidad de filas en la tabla " + modelo.getRowCount());
}// fin tablacli
-------------------------------------------------------------------------------------------
---------------------------- Evento donde llamo al metodo de arriba(ejecuta todo, pero no actualiza el jtable)---------------------------------
addWindowListener(new WindowAdapter() {
@Override
public void windowActivated(WindowEvent arg0) {
Vista.Clientes cli = new Vista.Clientes();
try {
cli.tablacli();
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error Al cargar la tabla Clientes! -- Funcion tablacli");
}
}
----------------------------------------------------------------------------------------------------
----------------- Evento desde donde tambien lo llamo(ejecuta todo, trae resultados el ResultSet, pero no carga el jtable tampoco)-------------------------------------
addWindowListener(new WindowAdapter() {
@Override
public void windowActivated(WindowEvent arg0) {
// Aca deberia ir la llamada de las funciones de completar las tablas tambien
Vista.Clientes cli = new Vista.Clientes();
try {
cli.tablacli();
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error Al cargar la tabla Clientes! -- Funcion tablacli");
}
}
------------------------------------------------------------------------------------------