gpt4 book ai didi

java - 如何刷新 Tableview 中的特定行或单元格

转载 作者:行者123 更新时间:2023-11-30 06:17:52 25 4
gpt4 key购买 nike

如何刷新 Tableview 中的特定行或单元格。

下面是刷新完整表格的代码行。

tableView.refresh()

下面是刷新表中特定列的代码行。

tableView.getColumns().get(0).setVisible(false);
tableView.getColumns().get(0).setVisible(true);

如何刷新特定行或特定单元格?

最佳答案

您不需要刷新行或 TableView。最佳实践是将单元格绑定(bind)到您放入其中的类的属性。

From the javadocs for TableView:

您可以通过如下定义类来实现此目的:

 public class Person {
private StringProperty firstName;
public void setFirstName(String value) { firstNameProperty().set(value); }
public String getFirstName() { return firstNameProperty().get(); }
public StringProperty firstNameProperty() {
if (firstName == null) firstName = new SimpleStringProperty(this, "firstName");
return firstName;
}

private StringProperty lastName;
public void setLastName(String value) { lastNameProperty().set(value); }
public String getLastName() { return lastNameProperty().get(); }
public StringProperty lastNameProperty() {
if (lastName == null) lastName = new SimpleStringProperty(this, "lastName");
return lastName;
}
}

首先,需要定义一个TableView实例,如下:

 TableView<Person> table = new TableView<Person>();

定义了基本表后,我们接下来关注数据模型。如前所述,对于此示例,我们将使用 ObservableList。我们可以立即将这样的列表直接设置到 TableView 中,如下所示:

 ObservableList<Person> teamMembers = getTeamMembers();
table.setItems(teamMembers);

通过如此设置的项目,只要团队成员列表发生更改,TableView 就会自动更新。如果在实例化 TableView 之前项目列表可用,则可以将其直接传递到构造函数中。

此时我们已经连接了一个 TableView 来观察 teamMembers observableList。现在缺少的要素是拆分模型中包含的数据并将其表示在一个或多个 TableColumn 实例中的方法。要创建一个两列的 TableView 以显示firstName 和lastName 属性,我们扩展最后一个代码示例,如下所示:

 ObservableList<Person> teamMembers = ...;
table.setItems(teamMembers);

TableColumn<Person,String> firstNameCol = new TableColumn<Person,String>("First Name");
firstNameCol.setCellValueFactory(new PropertyValueFactory("firstName"));
TableColumn<Person,String> lastNameCol = new TableColumn<Person,String>("Last Name");
lastNameCol.setCellValueFactory(new PropertyValueFactory("lastName"));

table.getColumns().setAll(firstNameCol, lastNameCol);

通过上面显示的代码,我们已经完全定义了创建 TableView 实例所需的最少属性。运行此代码(假设正确创建了 people ObservableList)将导致显示一个 TableView,其中显示两列,分别是firstName 和lastName。 Person 类的任何其他属性都不会显示,因为没有定义 TableColumn。

如果您的类没有属性并且您不想实现它们,您可以创建自己的自定义 CellValueFactory,如下所示:

 firstNameCol.setCellValueFactory(new Callback<CellDataFeatures<Person, String>, ObservableValue<String>>() {
public ObservableValue<String> call(CellDataFeatures<Person, String> p) {
// p.getValue() returns the Person instance for a particular TableView row
return p.getValue().firstNameProperty();
}
});
}

Note that this is straight from the javadocs.

关于java - 如何刷新 Tableview 中的特定行或单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48800076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com