Foros del Web » Programación para mayores de 30 ;) » Java »

cambios en celda de JTable

Estas en el tema de cambios en celda de JTable en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 30/09/2006, 08:35
Avatar de Orgueira  
Fecha de Ingreso: junio-2002
Ubicación: Coruña
Mensajes: 63
Antigüedad: 21 años, 10 meses
Puntos: 0
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 !!
  #2 (permalink)  
Antiguo 01/10/2006, 08:44
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
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.
  #3 (permalink)  
Antiguo 02/10/2006, 06:01
Avatar de Orgueira  
Fecha de Ingreso: junio-2002
Ubicación: Coruña
Mensajes: 63
Antigüedad: 21 años, 10 meses
Puntos: 0
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!!
  #4 (permalink)  
Antiguo 03/10/2006, 01:29
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
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.
  #5 (permalink)  
Antiguo 03/10/2006, 03:59
Avatar de Orgueira  
Fecha de Ingreso: junio-2002
Ubicación: Coruña
Mensajes: 63
Antigüedad: 21 años, 10 meses
Puntos: 0
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 !!
  #6 (permalink)  
Antiguo 03/10/2006, 13:06
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
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
  #7 (permalink)  
Antiguo 03/10/2006, 15:47
Avatar de Orgueira  
Fecha de Ingreso: junio-2002
Ubicación: Coruña
Mensajes: 63
Antigüedad: 21 años, 10 meses
Puntos: 0
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 !!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:33.