TableView Control JavaFX

TableView es un control que permite mostrar y editar datos en formato tabla, como Excel por ejemplo, un control TableView<T> está compuesto por filas y columnas, una celda es la intersección de una fila y una columna, en cada celda podemos presentar un dato del tipo deseado.

Para empezar crearemos una clase persona y un conjunto de datos de esta clase, cada elemento del conjunto se presentará como una fila (TableRow) y cada uno de los campos de la clase persona corresponderá a una columna (TableColumn).

Definición de la clase Persona


public class Persona {
    private String nombre;
    private String apellido;
    private LocalDate fechaNacimiento;

    public Persona(String nombre, String apellido, LocalDate fechaNacimiento) {
        this.nombre = nombre;
        this.apellido = apellido;
        this.fechaNacimiento = fechaNacimiento;
    }
// ...No es muestran los metodos get y set por simplicidad
}


Creación de un TableView


TableView<T> es una clase en donde podemos definir el tipo T, que es el tipo de datos que mostrara el control (Persona), también debemos agregar las columnas usamos la clase TableColumn<S, T> donde S debe ser el mismo tipo indicado en el TableView y T es el tipo de datos que se mostrara en la columna.


TableView<Persona> tableView = new TableView();
TableColumn<Persona, String> colNombre = new TableColumn<>("Nombre");
TableColumn<Persona, String> colApellido = new TableColumn<>("Apellido");
TableColumn<Persona, LocalDate> colFechaNacimiento = new TableColumn<>("Fecha de Nacimiento");
tableView.getColumns().addAll(colNombre, colApellido, colFechaNacimiento);


Hemos definido un TableView con tres columnas, el texto pasado al constructor de TableColumn corresponde al texto de cabecera que mostrara la columna en la parte superior de la misma, una para cada campo de la clase, observemos como cada uno de los tipos corresponden, en la ultima línea de código agregamos las columnas al control tableView.


colNombre.setCellValueFactory(new PropertyValueFactory<>("nombre"));
colApellido.setCellValueFactory(new PropertyValueFactory<>("apellido"));
colFechaNacimiento.setCellValueFactory(new PropertyValueFactory<>("fechaNacimiento"));

Persona p1 = new Persona("Juan", "Perez", LocalDate.parse("2012-11-01"));
Persona p2 = new Persona("Maria", "Loza", LocalDate.parse("2013-01-15"));
Persona p3 = new Persona("Adriana", "Mendez", LocalDate.parse("2014-07-20"));

tableView.getItems().addAll(p1, p2, p3);


Lo siguiente será indicar que campo de la clase Persona se mostrara en que columna, PropertyValueFactory obtendrá usando reflexión el dato indicado mediante su nombre en el constructor, debemos decir que esta no es la manera mas optima de hacerlo, lo correcto seria usar las propiedades JavaFX.

javafx tableview

Características de un TableView


El TableView es un control muy completo, hasta ahora hemos creado un control que permite visualizar un conjunto de datos, permite la ordenación de las columnas al hacer clic sobre ella, permite al usuario cambiar el orden en que se muestran las columnas arrastrando y soltando la columna en la posición deseada, además de cambiar el tamaño de las columnas.

Tenemos también la posibilidad de permitir al usuario decidir que columnas están visibles, tableView.setTableMenuButtonVisible(true); muestra un botón en la parte superior derecha que permite esta acción.

Si deseamos cambiar el texto que se muestra cuando el TableView está vacío usamos tableView.setPlaceholder(new Label("El TableView no contiene datos.")); 

Otra característica que debemos mencionar es que podemos crear columnas anidadas dentro de otras columnas, nos serviría para agrupar dos o mas columnas, solo debemos crear un TableColumn y agregarle columnas del mismo modo como lo hicimos con el TableView.

TableColumn<Persona, String> colPersona = new TableColumn<>("Persona");
colPersona.getColumns().addAll(colNombre, colApellido);

javafx tableview control
En la segunda parte de este tutorial veremos como usar propiedades JavaFX, habilitar la edición, personalizar las celdas y otras cosas mas.

Descargar Código Uso de TableView

Comentarios

Temas relacionados

Entradas populares de este blog

tkinter Grid

Controles y Contenedores JavaFX 8 - I

Conectar SQL Server con Java

tkinter Canvas