Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/10/2008, 14:13
Avatar de HackmanC
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 :-)