在不使用任何类的实例的情况下将项添加到表视图中



我正在设计一个关于编目的项目。在这个项目中,用户必须能够根据自己的意愿创建自己的表。因此,我没有任何静态类和它的实例

我正在创建一个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[]存储行(或类似数据结构(中每列的Strings作为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

我想到的最简单的解决方案是利用多态性。您可以创建一个同时包含BookMovie的超类,我们称之为Item。然后,您可以声明您的表包含Item,并在需要时强制转换为某个具体类。

相关内容

  • 没有找到相关文章

最新更新