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

Cambiar de lugar las filas en un JTable

Estas en el tema de Cambiar de lugar las filas en un JTable en el foro de Java en Foros del Web. Hola a todos, mi duda es la siguiente, tengo un JTable con por ejemplo 20 filas de un resultset que cargo desde la base de ...
  #1 (permalink)  
Antiguo 13/10/2008, 09:09
 
Fecha de Ingreso: junio-2007
Mensajes: 47
Antigüedad: 16 años, 10 meses
Puntos: 1
Cambiar de lugar las filas en un JTable

Hola a todos, mi duda es la siguiente, tengo un JTable con por ejemplo 20 filas de un resultset que cargo desde la base de datos, cada una de ellas es una acción a realizar, La funcionalidad de una ventana que creé con este Jtable es tener la posibilidad de priorizar las avtividades que estan el el Jtable ordenendolas de mayor a menor, la primera es la de mayor prioridad. La idea es un Jtable como ya lo mencione con dos botones, up and down en donde pueda cambiar la posición de las filas dentro del Jtable y que en ese momento guarde ese orden en la base de datos para que cuando ingrese de nuevo a esa ventana esté como la ordene la ultima ves. ¿Aguien sabe o tiene alguna sugerencia de como hacerlo?
Gracias
Saludos
  #2 (permalink)  
Antiguo 13/10/2008, 14:13
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Cambiar de lugar las filas en un JTable

Hola,

Tienes que modificar la Tabla en la base de datos para que contenga un campo adicional donde vas a almacenar el orden (un integer indexado - aparte del primary key).

Después tienes que crear un JTable con una o dos columnas con Editores y Renderers personalizados (Custom Renderers) para poder insertar los dos botones (up/down); aunque podrías dejar los botones afuera de la tabla, solamente 2 botones por toda la tabla; (no 2(up/down) para cada fila) y observar la fila seleccionada antes de actualizar el orden.

Después tienes que crear un Table Model personalizado donde vas a copiar el Resultset (la instrucción 'select' del Resultset debe tener un 'order by' ... el orden) para poder ordenarlo sin estar haciendo actualizaciones en la base de datos. (Lo adecuado sería crear un objeto para cada registro, un bean por cada registro de la tabla dentro de un List)

El JTable tiene que escuchar eventos del los botones (up/down), revisar la fila donde se presionaron en el Table Model (la fila que está seleccionada) y re-ordenarlos en memoria, y avisar al JTable con 'fireTable...' para que actualice la pantalla; mientras no se actualice la tabla de la base de datos.

Cuando el usuario seleccione una opción de finalizar y actualizar, actualizas (update) todos los registros de la base de datos, cambiando el campo orden por el nuevo orden que van a tener (contando una a una las filas descendentemente y usando el primary key).

Saludos,

ps:

Todo lo relacionado con este procedimiento lo encuentras en el Tutorial de Java (Inglés).
http://java.sun.com/docs/books/tutor...nts/table.html

Última edición por HackmanC; 13/10/2008 a las 14:27 Razón: limpiar un poquito :-)
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 17:58.