Beans Binding y JTable

Revisando la página inicial del NetBeans 6.0 (bueno luego de la actualización es la versión 6.0.1) y específicamente la sección de Blog’s he encontrado un ejemplo en donde se utiliza Beans Binding(JSR-295) y JTable.

La aplicación, como lo dice el autor, fue desarrollada completamente a mano, sin utilizar NetBeans. Y básicamente muestra como obtener datos desde una tabla, mostrarlas en un JTable y cuando se selecciona una fila, se muestran los datos de la fila en JTextFields.

Aqui pueden ver una imagen:


[Imagen tomada desde: http://blogs.sun.com/geertjan/entry/beans_binding_via_the_road%5D

Con ésto ya contamos con otros ejemplos de Beans Binding y elementos Swing. Si están interesandos en trabajar con JComboBox, puede revisar nuestro sitio y encontrarán un ejemplo de Beans Binding y JComboBox.

Powered by ScribeFire.

JComboBox y Beans Binding

ACTUALIZACIÓN:

Al momento de escribir éste post, la versión disponible de beans binding era la 0.5, por su número de versión podemos decir que dicho API se encontraba en desarrollo, por tal razón y con la salida de la versión oficial (versión a partir del 1) se han tenido varios cambios que hacen imposible que éste ejemplo trabaje según lo inidicado. Les recomiendo que trabajen con la última versión de beans binding. Pero no todo está perdido revisando en la Web y en blog de Patrick Keegan existe un ejemplo que no enseña cómo debemos hacerlo ahora; les comparto el link

En éste post he construido una aplicación que carga y muestra datos en un JComboBox, pero utilizando una solución diferente a la que planteé en un post anterior, pero la misma finalidad, una vez que se selecciona un valor en el combo necesito conocer el id (no el índice) del valor seleccionado, así como los combos de visual fox.

Demo

Para ésta nueva aplicación utilicé los Beans Binding, una nueva especificación de Java que permite tener sincronizados 2 Beans. Parte del código de la misma explicaré en las siguientes líneas.

En primer lugar tengo una clase (Primer Bean) que se llama Periodo que tiene 2 atributos tipo String id y nombre, y los métodos set y get para cada uno de ellos, además un constructor que permite crear objetos de la clase Periodo inicializando ambos parámetros.

Clase Periodo

La clase periodo será la que alimente de valores para el combo.

Tengo un formulario en donde se dibujan 2 etiquetas y 1 combo. Una de las étiquetas presenta el id del valor seleccionado en el combo.

Para utilizar los Beans Binding es necesario descargar el archivo beansbinding-0.5.jar e incluirlo dentro del proyecto de NetBeans. El código que permite crear objetos de la clase Periodo se encuentra en el método crearPeriodos() definido dentro del JFrame, los periodos creados son asignados a la propiedad periodos que es un objeto de la clase List.

Método que crear los objetos Periodo

Para asociar los valores de la lista de periodos al combo(2do Bean) es necesario utilizar Beans Binding en donde se puede ver que se hace uso de la EL (Expression Lenguage) para hacer referencia a los atributos de la clase Periodo, aquí el código:

Método que carga los datos al combo

Los parámetros de la línea 94 señalan que cuando se seleccione un valor del combo se debe seleccionar el atributo id de la clase Periodo. Existe otra manera (código comentado)de configuración en donde se señala que el objeto seleccionado no será un atributo sino todo el objeto.

El trabajo con los Beans Binding es de la manera fuente destino y podemos ver en la línea 93 como el origen de los datos es el ArrayList periodos y el destino es el combo (cbxPeriodos) y se señala que cada objeto que se encuentra en el ArrayList será un elemento (elements) del combo. Se llama al método bind para que tenga efecto las configuraciones anteriormente hechas.

La línea 95 dice que el atributo que debe presentar el combo es el atributo nombre que se encuentra en la clase Periodo.

Luego se crea un segundo bind en donde el origen es el combo, el valor seleccionado (en éste caso el id del periodo seleccionado) y el origen es una etiqueta (lblIdPeriodo 3er Bean) en su propiedad text.

Con ésto se logra el mismo efecto que en el post anterior, pero simplificado, debido a que no se debe programa el evento actionPerformed y son los Beans Binding se encargan de hacer la sincronización.

Dentro del método cargarPeriodos existen algunas líneas comentadas que muestran la segunda manera de configurar los elementos del combo y sincronizarla en éste caso con una propiedad de la clase actual (JFrame) que se llama periodoSeleccionado.
Como nos podemos dar cuenta en la especificación del Bean Binding, éste aún se encuentra en desarrollo y me imagino que la primera versión verá la luz con el lanzamiento de NetBeans 6.0, esto lo digo ya que NetBeans.