向JavaFx tableView添加一个简单行

时间:2016-09-07 10:01:30

标签: java javafx tableview row

我对TableView很新,并在JavaFx中进行自定义。我已经完成了很多教程,我已经了解了一些,但是在我的表中添加了行。 例如,我有一个名为Table1的表。根据我的理解,我可以创建列ArrayList和:

for (int i = 0; i <= columnlist.size() - 1; i++) {
    TableView col = new TableView(columnlist.get(i));
    Table1.getColumns().add(col);
}

现在我该如何为此添加一行?如果你能给我一个非常简单的例子,我会很感激,因为我已经通过了其他的例子,但它们太复杂了:)

1 个答案:

答案 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);