Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Manejar eventos

Hola a todos, soy nuevo en java, estoy haciendo un ejemplo sencillo, un abm contra una tabla en un Mysql, diseñe un jFrame con los campos habituales, id, nombre, direccion, etc, al que llame frmClientes, hasta aca todo bien. Doy de alta clientes, si coloco el id lo recupero y lo puedo editar o borrar, surge la necesidad de buscar por nombre, para eso diseño un segundo jFrame al que instancio desde frmCliente, con un jtable modificado, esa ventana, a llamo frmBuscar, la idea es que se visualicen los clientes de la tabla que cumplan con algún criterio, ejemplo "nombre like '%perez%'" y me muestre una persona por fila del jtable, esto ya lo resolví, asi:

private void cmdBuscarActionPerformed(java.awt.event.ActionEvent evt) {

frmBuscar busca = new frmBuscar();
SistemaG.jDesktopPane1.add(busca);
busca.toFront();
busca.setVisible(true);
busca.TituloCol0("ID");
busca.TituloCol1("NOMBRE");
busca.TituloCol2("DIRECIÓN");
busca.AnchoCol0(45);
busca.TituloBuscar("Buscar clientes");
String cad;
cad = this.txtNombre.getText();
if ("".equals(cad)) {
busca.ConsultaSQL("SELECT Clientes_ID, Clientes_Nombre, Clientes_Direccion FROM tblClientes ORDER BY Clientes_Nombre");
}
else {
busca.ConsultaSQL("SELECT Clientes_ID, Clientes_Nombre, Clientes_Direccion FROM tblClientes WHERE Clientes_Nombre like '" + this.txtNombre.getText() + "%' ORDER BY Clientes_Nombre");
}
}

El siguiente paso, seria que el usuario haga click sobre una fila del jtable, y frmBuscar genere un evento que capture la clase llamadora, es decir me informe el id del item clickeado, yo cierro el frmBuscar y muestro los datos de ese item en por ejemplo frmCliente, y es en este punto donde estoy parado. como puedo definir un evento propio en frmBuscar y como lo capturo en la clase llamadora frmCliente. desde ya muchas gracias.

PD: la idea es usar frmBuscar para varias entidades, tales como items de stock, localidades, etc, por eso los metodos, para definir los titulos de cada columna del jtable

enero 19, 2012 | Registered Commenterfagonzalez

Pégale un vistazo a esto:

http://www.dccia.ua.es/dccia/inf/asignaturas/RG/pdf/eventos-awt.pdf

Un saludo!

febrero 8, 2012 | Unregistered CommenterAlarde

No termino de entender del todo lo que estás haciendo, pero van un par de ideas generales:

1.- La mejor manera de procesar datos en un componente de Swing es siempre mediante sus respectivos modelos: los datos se "construyen" en el modelo, y cuando éste está preparado, se pasa el modelo al componente.

2.- Los listeners deben ejecutarse a la máxima velocidad posible, porque mientras se están ejecutando, el UI se bloquea para el usuario. Por esa razón no se deben realizar operaciones complejas, o que consuman mucho tiempo, dentro de un listener, como por ejemplo, consultas a una base de datos. Para eso existen las threads, y en el caso de componentes Swing, el SwingWorker.

febrero 8, 2012 | Registered Commenterchoces