我对TableView
很新,并在JavaFx中进行自定义。我已经完成了很多教程,我已经了解了一些,但是在我的表中添加了行。
例如,我有一个名为Table1
的表。根据我的理解,我可以创建列ArrayList
和:
for (int i = 0; i <= columnlist.size() - 1; i++) {
TableView col = new TableView(columnlist.get(i));
Table1.getColumns().add(col);
}
现在我该如何为此添加一行?如果你能给我一个非常简单的例子,我会很感激,因为我已经通过了其他的例子,但它们太复杂了:)
答案 0 :(得分:8)
您无法以这种方式创建列。 TableView
构造函数将ObservableList
作为参数,但它希望找到表值,换句话说,就是行。
我担心没有任何通用方法可以向您的表中添加项目,因为每个表都或多或少地耦合到其数据模型。我们假设您要显示一个Person
课程。
public class Person {
private String name;
private String surname;
public Person(String name, String surname) {
this.name = name;
this.surname = surname;
}
public String getName() {
return name;
}
public String getSurname() {
return surname;
}
}
为了做到这一点,你必须创建表及其两列。 PropertyValueFactory
将从您的对象中获取必要的数据,但您必须确保您的字段具有遵循标准命名约定(getName()
,getSurname()
等)的访问者方法。否则它将无法工作。
TableView tab = new TableView();
TableColumn nameColumn = new TableColumn("Name");
nameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));
TableColumn surnameColumn = new TableColumn("Surname");
surnameColumn.setCellValueFactory(new PropertyValueFactory<>("surname"));
tab.getColumns().addAll(nameColumn, surnameColumn);
现在,您所要做的就是创建Person
对象并将其添加到表项中。
Person person = new Person("John", "Doe");
tab.getItems().add(person);