Chr*_*pie 21 builder populate tableview scene javafx-2
我想知道如何使用数据填充TableView ...我看到的所有示例都创建了一个包含列和所有内容的TableView,并将其添加到场景中.全部都是在java代码中完成的.
我想知道的:如果我在JavaFx场景构建器中设计我的"表单".在那里定义所有表和列.如何访问它以从java填充它?或者,如果有人可以指出我正确的教程请.
我在JavaFx Scene Builder中定义了我的表单 - 只有一个包含3列的TableView
<?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>
Run Code Online (Sandbox Code Playgroud)
我的数据在我的Java代码中的ResultSet中.
ResultSet rs = c.createStatement().executeQuery(SQL);
Run Code Online (Sandbox Code Playgroud)
我需要填充TableView.
谢谢
Ulu*_*Biy 44
要访问tableview,您需要定义FXML页面的控制器.加
fx:controller="path.to.MyController"
Run Code Online (Sandbox Code Playgroud)
属性为AnchorPaneFXML文件.然后通过@FXML在这些变量前面添加注释来创建控制器并从FXML文件链接TableView,TableColumns :
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
}
}
Run Code Online (Sandbox Code Playgroud)
tableview填充在initialize方法中.请注意,在控制器中,我们不创建新的tableview或tablecolumns,因为它们已经在加载FXML文件时创建.另请注意,TableView和Tablecolumn变量名称必须与fx:id相应FXML文件中的值相同.因此,虽然UserId,UserName和Active名称不是方便的名称,但是将它们在FXML文件和Controller中分别更改为userIdCol,userNameCol和userActiveCol等名称.
| 归档时间: |
|
| 查看次数: |
48749 次 |
| 最近记录: |