我正在设计一个关于编目的项目。在这个项目中,用户必须能够根据自己的意愿创建自己的表。因此,我没有任何静态类和它的实例
我正在创建一个diaglog窗格,我可以根据数据库表的列名动态地为用户输入创建文本字段,但我如何将这些用户的输入添加到tableView中?
由于我可以将任何字符串输入添加到ListView中,我可以将用户字符串输入添加至tableView列中吗?
ListView<String> listView = new ListView();
public ObservableList<String> listCatalogNames = FXCollections.observableArrayList();
listCatalogNames.add("Books");
更详细的例子;
有一个包含所有目录名称的listview,根据lisview的选择,tableview将在borderpane的中心动态创建。
用户有书籍(名称、作者、页面(和电影(名称、年份、导演、导演(目录。
假设用户选择的电影和表View显示为4列,然后单击添加按钮。使用4个文本字段创建的诊断日志窗格。在此之前,我构建了所有内容,但我无法将用户的输入添加到tableView中,因为我没有任何电影或书籍等的静态类。
有什么方法可以创建动态类吗?
请给我一个主意,帮我解决那个问题。
这是我们项目的github链接
只需使用String[]
存储行(或类似数据结构(中每列的String
s作为TableView
的项类型。从输入创建一个String[]
并将其添加到此TableView
:应该足够简单
static TableView<String[]> createTable(String... columnNames) {
TableView<String[]> table = new TableView<>();
for (int i = 0; i < columnNames.length; i++) {
final int index = i;
TableColumn<String[], String> column = new TableColumn<>(columnNames[i]);
column.setCellValueFactory(cd -> new SimpleStringProperty(cd.getValue()[index]));
table.getColumns().add(column);
}
return table;
}
将String[] userInputs
添加到TableView<String[]> table
的操作如下:
table.getItems().add(userInputs);
类似的问题(基于ResultSet
的元数据创建TableView
(可以在这里找到:如何用数据库数据填充TableView
我想到的最简单的解决方案是利用多态性。您可以创建一个同时包含Book
和Movie
的超类,我们称之为Item
。然后,您可以声明您的表包含Item
,并在需要时强制转换为某个具体类。