JavaFX. Crear y rellenar un TableView

TableView es un elemento de JavaFX que nos permite mostrar datos en formato tabla. Esto es útil si por ejemplo queremos mostrar los datos de un Array de forma ordenada en una tabla o consultas SELECT a una base de datos.

Lo primero que tenemos que hacer es crear la tabla y asignarle un fxid:

Añadimos las columnas y les asignamos un fxid también:

Ahora, desde el DocumentController indicamos los tipos de datos para estas variables.

La tabla será de tipo Pelicula (tendremos que crear la clase Pelicula)

Clase Pelicula.java

   public class Pelicula {

    private String titulo;
    private String argumento;
   
    // Constructor
    public Pelicula(String titulo, String argumento) {
        this.titulo = titulo;
        this.argumento = argumento;
    }

}

Por último definimos un ObservableList listaPeliculas y lo rellenamos con los elementos que tendrá la tabla. También relacionamos las columnas con las propiedades de la clase Pelicula.

Todo el código:

import java.net.URL;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;

/**
*
* @author Alex Clemente < DAW >
*/

public class FXMLDocumentController implements Initializable {

// Variables de la tabla y sus columnas
@FXML
private TableView<Pelicula> tablaPeliculas;
@FXML
private TableColumn<Pelicula, String> colTitulo;
@FXML
private TableColumn<Pelicula, String> colArgumento;

@Override
public void initialize(URL url, ResourceBundle rb) {

// ObservableList con el contenido que tendrá la tabla
ObservableList<Pelicula> listaPeliculas = FXCollections.observableArrayList();
// Rellenamos el observableArrayList
listaPeliculas.add(new Pelicula("Harry Potter","Magia"));
listaPeliculas.add(new Pelicula("Harry Potter1","Magia1"));
listaPeliculas.add(new Pelicula("Harry Potter2","Magia2"));

// Estas dos líneas hacen lo mismo
tablaPeliculas.setItems(listaPeliculas);
// tablaPeliculas.getItems().addAll(listaPeliculas);

// Se relacionan las columnas de la tabla con las propiedades de la clase Pelicula
colTitulo.setCellValueFactory(new PropertyValueFactory<Pelicula, String>("titulo"));
colArgumento.setCellValueFactory(new PropertyValueFactory<Pelicula,String>("argumento"));

}

}

Resultado:

Deja una respuesta