【问题标题】:Add a simple row to JavaFx tableView向 JavaFx tableView 添加一个简单的行
【发布时间】:2017-01-14 23:07:11
【问题描述】:

我对@9​​87654321@ 很陌生,并在 JavaFx 中对其进行了自定义。我经历了很多教程,我已经理解了一些,但坚持在我的表中添加行。 例如,我有一个名为Table1 的表。据我了解,我可以创建列ArrayList 和:

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

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

【问题讨论】:

  • Table1.getItems() 是您可以添加行的地方。
  • 您不能将TableView 用作TableView 列。

标签: java javafx tableview row


【解决方案1】:

您不能以这种方式创建列。 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);

【讨论】:

    猜你喜欢
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多