domingo, 13 de enero de 2008

Java Datawindow Manipulación Datos en Grid (II)

20 Noviembre 2007

Recordemos que la fecha de presentación del primer modulo del proyecto es el 30 de Noviembre del 2007 y la verdad que el tiempo me quedara corto, desconocía la magnitud del trabajo que me tomaría realizar las implemetaciones de estos Objetos, hasta donde estoy conociendo Java es un lenguaje muy potente y me obliga a pensar todo en objetos pero lo bueno es que todo se puede hacer esto me motiva y se que después de acabar con los objetos que me he propuesto mi desarrollo sera muy rápido.

Ya descrita la implementación de la clase encargada del modelo de datos ahora mostrare la implementación del objeto que extenderá el JTable. Antes de esto describire que funcionalidades debería tener el Objeto datawindow:
  • Deberá permitirme realizar la validación de campos
  • Me permitira personalizar el mensajes de error de validación
  • Los objetos encargados de la edición en cada celda estaran en función del tipo de datos
  • Los objetos de edicición que se utilizaran seran los implementados con anterioridad
  • Se podra especificar que columnas seran visibles
  • Se podrá especificar que columnas serán editables
  • Se podrán especificar los colores de texto y fondo de cada celda
  • Se podrá especificar los títulos de cada columna
  • Se podrá especificar el ancho de cada columna
Decidí implementar estas propiedades como array según los diferentes tipos de datos, aqui muestro la declaración de la clase:




Posiblemente podría aver declarado las propiedades utilizando otros tipos de datos mucho mas eficientes, pero en fin estoy contra el tiempo y espero poder afinar esto de los tipos de datos mas adelante.
Este objeto deberá inicializar los arrays así como inicializar la propiedad del modelo de datos PModelo_data, etc.
Dentro de las propiedades mas importantes de este objeto podemos ver el modelo de datos (PModelo_data) la conexión a la base de datos (PSqlca) el modelo de Columnas (PModelo_columnas del tipo TableColumnModel) y los eventos de las columnas del tipo TableColumnModelListener.
Este objeto implemetara los metodos siguientes:
  • Insertrow
  • Deleterow
  • Retrieve
  • Getvalue
  • Setvalue
  • Close
  • Update
  • Getcolumnname
  • Rowcount
  • Commit
  • Updaterow
Básicamente estos métodos llaman a los métodos con el mismo nombre de la clase datastore y teniendo en cuenta la actualización del JTable atraves de los métodos:
  • fireTableRowsInserted
  • fireTableRowsDeleted
  • fireTableRowsUpdated
También se han creado métodos Setvalue1 y Getvalue1 los cuales actúan sobre la fila actual y solamente se debe especificar la columna y el valor según sea el caso, estos métodos así como los anteriores están sobrecargados para aceptar su llamada ya sea po0r el numero de la columna o por el nombre de esta.

El JTable deja el manejo de os datos a su modelo y tiene una presentación de los datos en función a la clase de estos, esta clase se devuelve en el método getColumnClass del modelo de datos, por ejemplo lo datos tipo texto en un JTextfiel y los datos lógicos en un JCheckbox y así de igual manera con los otros datos. Esto es para la edición la cual es la por defecto pero esto queda a la libertad del programador cambiarlos. La presentación de los datos se realiza con una etiqueta (Jlabel) por defecto, una cosa es la edición de los datos y otra la visualización de estos. Para realizar la personalización de la visualización para el JTable se debe utiliza una clase basada en DefaultTableCellRenderer la cual nos permitirá controlar la presentación de los datos.
Aqui la implementación de una clase que tendrá la función de mostrarnos los datos según los colores que se hayan configurado así como de otras condiciones mas:



Cualquier duda sobre la implementación y sus detalles puedes preguntármelo y gustoso tratare de absolver tus dudas.

1 comentario:

Anónimo dijo...

buenos dias,
me gustaria desarrollar mi propio datawindow en java, para ello me gustaria me des una orientacion en detalle para poder implementarlo, he revisado pequeños programas con el jtable y el modelo que usan
mi correo es ddjavasoft@gmail.com