llenar data tableview javafx-2 builder populate scene

data - llenar tableview javafx



Cómo llenar un TableView que está definido en un archivo fxml que está diseñado en JavaFx Scene Builder (2)

Para acceder a la vista de tabla, debe definir un controlador de su página FXML. Añadir

fx:controller="path.to.MyController"

atribuir al AnchorPane en el archivo FXML. Luego cree el controlador y vincule TableView, TableColumns desde el archivo @FXML colocando la anotación @FXML delante de estas variables:

package path.to; public class MyController implements Initializable { @FXML private TableView<User> tableView; @FXML private TableColumn<User, String> UserId; @FXML private TableColumn<User, String> UserName; @FXML private TableColumn<User, String> Active; @Override public void initialize(URL location, ResourceBundle resources) { UserId.setCellValueFactory(new PropertyValueFactory<User, String>("id")); UserName.setCellValueFactory(new PropertyValueFactory<User, String>("name")); Active.setCellValueFactory(new PropertyValueFactory<User, String>("active")); tableView.getItems().setAll(parseUserList()); } private List<User> parseUserList(){ // parse and construct User datamodel list by looping your ResultSet rs // and return the list } }

La vista de tabla se rellena en el método de initialize . Tenga en cuenta que en el controlador no estamos creando nuevas vistas de tabla o tabla, ya que ya están creadas mientras se carga el archivo FXML. También tenga en cuenta que los nombres de las variables TableView y Tablecolumn deben ser los mismos con los valores de fx:id en el archivo FXML correspondiente. Entonces, si bien los nombres UserId, UserName y Active no son nombres convenientes, cámbielos tanto en el archivo FXML como en Controller a nombres como userIdCol, userNameCol y userActiveCol respectivamente.

Me gustaría saber cómo llenar un TableView con datos ... Todos los ejemplos que he visto crean un TableView con columnas y todo y lo agrego a la escena. Todo hecho en el propio código java.

Lo que quiero saber: si diseño mi "formulario" en JavaFx Scene Builder. Definiendo todas las tablas y columnas allí. ¿Cómo accedo a él para poblarlo desde java? O si alguien puede indicarme un tutorial adecuado sobre esto, por favor.

He definido mi formulario en JavaFx Scene Builder, solo un TableView con 3 columnas

<?xml version="1.0" encoding="UTF-8"?> <?import java.lang.*?> <?import java.util.*?> <?import javafx.scene.control.*?> <?import javafx.scene.layout.*?> <?import javafx.scene.paint.*?> <AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="288.0" prefWidth="293.0" xmlns:fx="http://javafx.com/fxml"> <children> <TableView fx:id="tableView" layoutX="35.0" layoutY="28.0" prefHeight="200.0" prefWidth="227.0"> <columns> <TableColumn prefWidth="75.0" text="UserId" fx:id="UserId" /> <TableColumn prefWidth="75.0" text="UserName" fx:id="UserName" /> <TableColumn prefWidth="75.0" text="Active" fx:id="Active" /> </columns> </TableView> </children> </AnchorPane>

Tengo mis datos en un ResultSet en mi código de Java.

ResultSet rs = c.createStatement().executeQuery(SQL);

Necesito rellenar el TableView.

Gracias


Puedes hacer esto en tu controlador:

@FXML private TableView<User> table; private List<User> users; @Override public void initialize(URL url, ResourceBundle rb) { // Set the columns width auto size table.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); table.getColumns().get(0).prefWidthProperty().bind(table.widthProperty().multiply(0.33)); // 33% for id column size table.getColumns().get(1).prefWidthProperty().bind(table.widthProperty().multiply(0.33)); // 33% for dt column size table.getColumns().get(2).prefWidthProperty().bind(table.widthProperty().multiply(0.33)); // 33% for cv column size table.getItems().setAll(this.users); }