如何在JavaFX中创建一个在运行时动态添加列的TableView



我有一个TableView,它的内容应该是可编辑的,实际上必须持久化在数据库中。这个TableView有一些预定义的列和一些将在运行时定义的其他列。假设我的桌子将展示一些特殊食物的主要材料。这些主要材料有一些预定义的列(属性(,如名称、价格和单位;此外,这些主要材料还有一些其他属性,这些属性基于之前的用户输入(如脂肪量、蛋白质量等(保留在数据库中。请注意,这些属性在数据库中,应在运行时映射到表中的列(这些列也应可编辑(。所以我在fxml文件中创建了表格,并添加了预定义的列;还有应该声明为存储表行的表模型。这是我的表模型类:(为了简单起见,省略了构造函数和访问器方法(

public class PrimaryMaterialBean {
private SimpleStringProperty number;
private SimpleStringProperty name;
private SimpleStringProperty price;
private SimpleStringProperty unit;
}

和TableView代码:

<TableView fx:id="table" layoutX="97.0" layoutY="170.0" nodeOrientation="RIGHT_TO_LEFT" prefHeight="400.0" prefWidth="816.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="121.0">
<columns>
<TableColumn fx:id="numberColumn" minWidth="50.0" prefWidth="50.0" text="number" />
<TableColumn fx:id="nameColumn" minWidth="300.0" prefWidth="300.0" text="name" />
<TableColumn fx:id="priceColumn" minWidth="220.0" prefWidth="220.0" text="price" />
<TableColumn fx:id="unitColumn" minWidth="90.0" prefWidth="90.0" text="unit" />
</columns>
</TableView>

我知道我应该在相应的控制器文件中声明额外的动态列。此外,我还知道如何添加动态库。但实际的问题是,我不知道如何声明这些列是可编辑的,也不知道如何映射模型类中相应的文件:(

我找到了一个解决方案来完成这项任务,那就是在运行时创建一个java类。我不知道这个解决方案是否可靠,但对我来说,它是有效的。

最新更新