首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从模型自动更新TableView中的行

从模型自动更新TableView中的行
EN

Stack Overflow用户
提问于 2012-06-06 18:47:15
回答 2查看 24.9K关注 0票数 6

我一直在寻找有关将数据刷新到表视图中的信息。我试着直接修改模型,但我得到了一个错误。我修改了模型,但是表没有刷新,只有当我移动一列时,表才会显示修改后的值。

为了向你展示一个例子(13-6),我采用了这个教程:

http://docs.oracle.com/javafx/2/ui_controls/table-view.htm#CJABIEED

我修改了它,包括一个按钮,并在它的操作中:

代码语言:javascript
复制
Button button = new Button("Modify");
button.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
    String name = table.getItems().get(0).getFirstName();
    name = name + "aaaa";
    table.getItems().get(0).setFirstName(name);
    }
});

final VBox vbox = new VBox();
vbox.setSpacing(5);
vbox.getChildren().addAll(label, table, button);
vbox.setPadding(new Insets(10, 0, 0, 10));

我猜这是tableview中的一个bug,但是有没有可能修复这个问题呢?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-06 20:37:38

要使TableView能够跟踪数据更改,需要将相关字段公开为JavaFX属性。从教程中将下一个方法添加到Person类:

代码语言:javascript
复制
    public SimpleStringProperty firstNameProperty() {
        return firstName;
    }

    public SimpleStringProperty lastNameProperty() {
        return lastName;
    }

    public SimpleStringProperty emailProperty() {
        return email;
    }
票数 21
EN

Stack Overflow用户

发布于 2013-09-04 08:23:42

TableView更新(https://javafx-jira.kenai.com/browse/RT-22463)中存在错误。我有类似的问题,经过一些搜索后,这是我的解决办法。我发现,如果删除列,然后重新添加,那么表就会更新。

代码语言:javascript
复制
public static <T,U> void refreshTableView(TableView<T> tableView, List<TableColumn<T,U>> columns, List<T> rows) {        
    tableView.getColumns().clear();
    tableView.getColumns().addAll(columns);

    ObservableList<T> list = FXCollections.observableArrayList(rows);
    tableView.setItems(list);
}

用法示例:

代码语言:javascript
复制
refreshTableView(myTableView, Arrays.asList(col1, col2, col3), rows);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10912690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档