style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Ayuda con eventos en JTable

Hola que tal colegas, les cuento que he tenido la necesidad, de trabajar mucho con el contro JTable y he logrado grandes avances, que luego compartire, sin embargo ahorita necesito plantearles una situcion.

Requiero una tabla que cuando de enter en la ultma fila, se agregue una fila nueva<-- esto lo implemente mediante un escuchador del evento actionPerformed,

tambien dicha tabla deve validar los datos ingresados en cada celda, no le veo mayor problema y lo manejaria con un escuchador de igual manera, sin embargo he notado y leido que apartir de la version 1.4 del JDK las JTables reconocen el tipo de dato que va a contener cada columna y hacen validaciones automaticas, y se preguntaran de que estoy hablando bien ahi les va:

si tengo una columna que se llame edad, y al crear la tabla al enviarle un int, cuando quiero editarlo solo me va a aceptar datos de tipo numerico, marcando la celda con rojo, si esque meto algun espacio en blanco un simbolo raro o una letra, incluso si meto esto "45-4" me valida y me marca en rojito la celda, y eso esta bien cumple una parte de mis necesidades, que es dejar meter solo numeros enteros, bien el problema es que me acepta valores negativos o iguales a cero, y quisiera pedirles ayuda, para saber si hay alguna manera de implementar esta validacion de manera mas directa,sin tener que hacerlo todo " a manita". porque como ya lo dije lo de menos es crear el listener y validar los datos , pero como veo que ya lo hace, solo me gustaria agregrle el "dato>0", como comentario, la tabla que uso es una JTable normal con un DefaultTableModel que heredo de AbstractTableModel y ademas implements Serializable.

Gracias..

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de rugi

RuGI

La manera más rápida que se me ocurre es que....el rederer de esa celda sea un Jformattedtextfield....
Otra opción es que utilices expresiones regulares para validar lo que escriben.

Te paso dos enlaces para estas dos enlaces si quieres profundizar en esto;
http://download.oracle.com/javase/tutorial/uiswing/components/table.html...
http://www.regular-expressions.info/java.html

Tambien para mejorar el desempeño de tu tabla.... puedes cambiar el abstract model por alguna implementacion propia.
En javaHispano hay un artículo sobre ello:
{JTable, TableModel y rendimiento: Francesc Rosés nos explica como utilizar mejor nuestros TableModels para cargas masivas de datos}
http://www.javahispano.org/contenidos/es/jtable__tablemodel_y_rendimiento/

Saludos!!
RuGI

JIDE

Puedes echarle un ojo a las biblotecas de JIDE, tienen muchos componentes muy buenos. Revisa si entre los que tienen como gratuitos hay algo como lo que necesitas.

Espero te sirva

Imagen de Shadonwk

woorales, gracias por

woorales, gracias por contestar tan rapido, bueno ya vi que de ese no me salvo de programarle su listener jaja pero eso ya sera para el lunes, ahora me surgio otro problema..

para agregar una fila a la tabla primero obetengo el modelo :

MiModeloPersonal miModelo = miTabla.getModel();

despues hagrego la fila como vector con los campos necesarios:

Vector miFila = new Vector();
miModelo.addRow(miFila);

y funciona perfectamente ahora la operacion inversa:

miModelo.removeRow(index);

donde index es un int con la posicion de la fila a eliminar, y es aqui donde esta el detalle, con cualquir numermo mayor a "0"<-cero, lo hace muy bien, obviamente siempre y cuando exista la fila.. pero cuando intento eliminar la fila "0"-- me da un nullPointerException, alguen sabe algo al respecto??

de antemano gracias.. =)

Imagen de JaimeItlzc

Sera

Sera por que al momento de ir eliminando no tienes elementos ya?

Aqui este ejemplo que por ahi me encontre:

por lo tanto si queria eliminar 5 elementos y ya llevo eliminados 3, al momento de querer eliminar el 4 marcara excepcion por q no encuentra el 4 elemento puesto que ahora solo tendra 2, la forma de resolverlo fue exactamente como lo mencionaste, haciendo un bucle que se repita deacuerdo al numero de filas existentes y que siempre vaya eliminando la fila 0, para que asi no haya problemas de desbordamiento,

Saludos.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">