我正在尝试扩展 JavaFX TableView 类,以便我可以将实体类传递给它,它会显示该类的所有已保存对象。我可以让它像这样工作,但我希望我的自定义类足够通用,只接受一个 Class 变量并处理其余的:
private void showSuppliers()
{
tabPane.getTabs().stream().filter((tab) -> (tab.getText().compareTo("Fournisseurs") == 0)).map((tab) -> (VBox)tab.getContent()).forEachOrdered((vBox) ->
{
TableView<Supplier> table = new TableView<>();
TableColumn nameColumn = new TableColumn("Nom");
nameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));
TableColumn addressColumn = new TableColumn("Addresse");
addressColumn.setCellValueFactory(new PropertyValueFactory<>("address"));
TableColumn contactColumn = new TableColumn("Contact");
contactColumn.setCellValueFactory(new PropertyValueFactory<>("contactPerson"));
TableColumn phoneNumberColumn = new TableColumn("Téléphone");
phoneNumberColumn.setCellValueFactory(new PropertyValueFactory<>("phoneNumber"));
TableColumn emailColumn = new TableColumn("Courriel");
emailColumn.setCellValueFactory(new PropertyValueFactory<>("emailAddress"));
TableColumn creationDateColumn = new TableColumn("Date de création");
creationDateColumn.setCellValueFactory(new PropertyValueFactory<>("enteredDate"));
table.getColumns().addAll(nameColumn, addressColumn, contactColumn, phoneNumberColumn, emailColumn, creationDateColumn);
ObservableList<Supplier> suppliers = FXCollections.observableArrayList(supplierService.findAll());
table.setItems(suppliers);
vBox.getChildren().add(table);
});
}
同样,上述方法效果很好,但我必须为每个列出我想要避免的不同数据的表重复它。
如您所见,添加列不是问题。我不明白的是如何使用我的 T 来制作这样的 ObservableList :
ObservableList<Supplier> suppliers = FXCollections.observableArrayList(supplierService.findAll());
我尝试了更换<Supplier>的<T>或<Class<T>>和似乎并不有效。当这些东西几乎不存在时,我就学会了 Java,而且我在网上找到的关于它的信息说实话有点令人困惑。
如何使用我的 T 变量作为类型构建我的列表?
白板的微信
相关分类