gpt4 book ai didi

tableview - 如何填充在 JavaFx Scene Builder 中设计的 fxml 文件中定义的 TableView

转载 作者:行者123 更新时间:2023-12-03 11:48:20 25 4
gpt4 key购买 nike

我想知道如何用数据填充 TableView ......我看到的所有示例都创建了一个包含列和所有内容的 TableView 并将其添加到场景中。全部在java代码中完成。

我想知道的是:如果我在 JavaFx 场景构建器中设计我的“表单”。定义其中的所有表和列。我如何访问它以从 Java 填充它?或者,如果有人可以指出我对此的正确教程。

我已经在 J​​avaFx 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>

我的 Java 代码的 ResultSet 中有我的数据。
ResultSet rs = c.createStatement().executeQuery(SQL);

我需要填充 TableView。

谢谢

最佳答案

要访问 tableview,您需要定义 FXML 页面的 Controller 。添加

fx:controller="path.to.MyController"

归因于 AnchorPane在 FXML 文件中。然后通过放置 @FXML 创建 Controller 并从 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
}
}

表格 View 填充在 initialize 中方法。请注意,在 Controller 中我们没有创建新的 tableview 或 tablecolumns,因为它们已经在加载 FXML 文件时创建。还要注意,TableView 和 Tablecolumn 变量名必须与 fx:id 相同。相应的 FXML 文件中的值。因此,虽然 UserId、UserName 和 Active 名称不是方便的命名,但在 FXML 文件和 Controller 中将它们分别更改为 userIdCol、userNameCol 和 userActiveCol 等名称。

关于tableview - 如何填充在 JavaFx Scene Builder 中设计的 fxml 文件中定义的 TableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11180884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com