Retroceder   Foros del Web > Programación para sitios web > Java y JSP

Respuesta
 
Herramientas Desplegado
Antiguo 30-sep-2006, 08:35   #1 (permalink)
Orgueira está en el buen camino
 
Avatar de Orgueira
 
Fecha de Ingreso: noviembre-2002
Ubicación: Coruña
Mensajes: 63
cambios en celda de JTable

Hola, tengo una JTable en la que tengo dos columnas editables, ambas son Boolean, se muestra como un CheckBox. Mi pregunta es cual creeis que es la mejor forma de detectar que se cambio el valor de ese checkBox, es decir que se pulso sobre una celda de la columna editable.

Por lo que llevo mirado la mejor manera, no se si unica, de hacer esto es haciendo una clase que implemente TableModelListener y redefinir tableChanged para que haga lo que desee en el momento que se cambia el valor del CheckBox de la celda que se acaba de seleccionar.

Alguna manera mejor de hacer esto???

Gracias !!
Orgueira está desconectado   Responder Citando
Antiguo 01-oct-2006, 08:44   #2 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.485
Si estas utilizando un TableModel y lo defines como "editable", al cambiar el valor de una celda te tendria que llamar automáticamente al método "setValueAt(Object value, int row, int col)" de tu TableModel, si no me equivoco. Hace tiempo que no lo uso, pero creo que era así de fácil.

S!

PD: El TableModelListener es cuando quieres que lo que reciba el evento no sea tu TableModel si no otra clase distinta.
GreenEyed está desconectado   Responder Citando
Antiguo 02-oct-2006, 06:01   #3 (permalink)
Orgueira está en el buen camino
 
Avatar de Orgueira
 
Fecha de Ingreso: noviembre-2002
Ubicación: Coruña
Mensajes: 63
Efectivamente. La situación es esa. Dentro del modelo de la tabla se pueden detectar los cambios asi de facil, pero el tratamiento que quiero hacer no sería dentro del modelo, sería en el JDialog que contiene esa tabla.

La situacion concreta es: Un JDialog con un objeto que contiene una Collection de Objetos, que son los que meto en las filas de la tabla. Al modificarlos en la tabla se debería modificar el valor del objeto en el JDialog.

Por lo que miré, todo me lleva a definir el TableModelListener, mirar en que celda se produjo el cambio y cambiar el valor en el objeto. Como no había hecho esto antes, no sabía si era una buena forma de hacerlo.

Un saludo y gracias!!
Orgueira está desconectado   Responder Citando
Antiguo 03-oct-2006, 01:29   #4 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.485
La forma... metódica de hacerlo es que la Collection de objetos no dependa de la Tabla en si, si no del TableModel.

Es decir, tu creas tu table model alrededor de la coleccion de objetos y todo lo que muestra los objetos depende de la colección. Las modificaciones se hacen sobre la coleccion y despues se notifica a los "visualizadores" que ha habido algun cambio, usando listeners.

Eso es el origen del Modelo MVC, para evitar tener que realizar todos los cruces de datos entre componentes cuando hay modificaciones.

Pero bueno, si no la otra forma es con el Listener como has hecho tu, que tampoco es incorrecto.
GreenEyed está desconectado   Responder Citando
Antiguo 03-oct-2006, 03:59   #5 (permalink)
Orgueira está en el buen camino
 
Avatar de Orgueira
 
Fecha de Ingreso: noviembre-2002
Ubicación: Coruña
Mensajes: 63
Ok, gracias. Eso me temía yo. No me parecía demasiado correcto lo que estaba haciendo, pero como era la primera vez ... fue a lo primero que llegué.

Intentaré cambiarlo, si no me supone demasiados cambios, porque tengo un monton de JDialog y todos con el mismo comportamiento. Como funcionar funciona... no me tiene muchisima prisa.

Gracias !!
Orgueira está desconectado   Responder Citando
Antiguo 03-oct-2006, 13:06   #6 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.485
Al principio todos lo hacemos así, ya que de la otra forma aunque es mejor a la larga... es un poco más rebuscado y cuesta pillarle la filosofía.

No soy un experto en Swing, ya que solo le pego a veces por hobby, pero hace poco hice una aplicación donde habia 2 Tablas relacionadas y sus TableModel, lanzando eventos, con filtros etc. Si te sirve como ejemplo, el proyecto es Open Source y se puede consultar aqui:

El proyecto:
https://mw4serverseeker.dev.java.net/

Un modelo de Tablas: https://mw4serverseeker.dev.java.net....3&view=markup

Otro:
https://mw4serverseeker.dev.java.net....3&view=markup

En este caso eran dos tablas relacionadas ya que la seleccion de una se iba a la otra y por eso los Modelos tambien estan relacionados. Quizá te de alguna idea.

Un saludo
GreenEyed está desconectado   Responder Citando
Antiguo 03-oct-2006, 15:47   #7 (permalink)
Orgueira está en el buen camino
 
Avatar de Orgueira
 
Fecha de Ingreso: noviembre-2002
Ubicación: Coruña
Mensajes: 63
Curiosamente buscando por internet, a parte de preguntar en el foro, había llegado a esa pagina, jejeje. A los modelos de las tablas no había llegado, pero tomo nota.

Gracias por la info !!
Orgueira está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Desactivado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 02:35.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93