Autoupdating rows in TableView from model

前端 未结 2 740
情歌与酒
情歌与酒 2020-12-01 15:28

I\'ve been looking information about refreshing data into a tableview. I was trying modifying directly the model, but I get a bug. I modify the model, but the table doesn\'t

相关标签:
2条回答
  • 2020-12-01 15:47

    There is a bug in TableView update (https://javafx-jira.kenai.com/browse/RT-22463). I had similar problem and after some search this is my workaround. I found that if the columns are removed and then re-added the table is updated.

    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);
    }
    


    Example of usage:

    refreshTableView(myTableView, Arrays.asList(col1, col2, col3), rows);
    
    0 讨论(0)
  • 2020-12-01 16:09

    to make TableView able to track data changes you need to expose relevant fields as JavaFX properties. Add next methods to Person class from tutorial:

        public SimpleStringProperty firstNameProperty() {
            return firstName;
        }
    
        public SimpleStringProperty lastNameProperty() {
            return lastName;
        }
    
        public SimpleStringProperty emailProperty() {
            return email;
        }
    
    0 讨论(0)
提交回复
热议问题