Elementos gráficos – Tablas

Posted by in Componentes JavaFX, JavaFx

Las tablas representan uno de los elementos gráficos más completos dentro de una interfaz gráfica ya que son capaces de manejar datos con las principales acciones de una base de datos CRUD. Al mismo tiempo estos datos pueden ser representados de muy diferentes formas gracias a los modelos de pintado que se verán más adelante.

Lo primero que hay que tener en cuenta y es una de las principales diferencias con las tablas de Swing es que en javafx una tabla está compuesta por los siguientes elementos:

  • TableView
    • TableColumn

Por lo tanto una tabla está formada por columnas, donde cada una de ellas tendrá un id asignado que se utilizará para asociar una propiedad del objeto de se quiera representar en la tabla.

Al igual que pasa con los elementos que muestran datos como las listas o los spinner, la tabla se nutre de datos los cuales están dentro de una colección de tipo FXCollection.ObservableList. Por lo tanto lo primero que se debe hacer es crear una clase con el objeto que se quiere representar en la tabla el cual está compuesto por cada uno de los atributos que se quiera pero la diferencia que serán del tipo SimpleTipoProperty, lo que facilitará la asociación del elemento concreto con la columna que se quiere asociar

Una vez se tiene el objeto “modelo”, se contruye la tabla donde a cada columna se le asocia un atributo del modelo mediante el método setCellValueFactory() al cual se le pasa un objeto de tipo PropertyValueFactory<TipoObjeto,TipoDato>() al cual se le pasa el nombre de la propiedad que se quiere asociar. En el ejemplo anterior existía una propiedad llamada matriculado, para poder asignarla a la columna correspondiente sería:

Por último se crea la colección de datos y se asocia a la tabla

De esta forma la tabla directamente representa todos los datos de forma automática.

Para poder trabajar las opciones básicas de la tabla como añadir o borrar datos, se realizan las operaciones de forma directa sobre la lista asociada a la tabla junto con el método refresh() para actualizar todos los posibles cambios. Si se quiere realiza esta acción al pulsar un botón el código sería de la siguiente forma

 

Para trabajar con la selección de la tabla se debe realizar todo desde el modelo de selección accediendo a el de la siguiente forma

Así se está asegurado que se trabaja con los datos asociados y no con la parte gráfica. El método para poder acceder al objeto de la fila seleccionado se utiliza el método getSelectedItem()

Si se quiere evaluar el cambio de la selección de la tabla se realiza mediante un escuchador

Los códigos utilizados en son: