Аутентификация строк в TableView из модели

Я искал информацию об обновлении данных в виде таблицы. Я пытался изменить модель напрямую, но я получаю ошибку. Я изменяю модель, но таблица не обновляется, только когда я перемещаю столбец, таблица показывает измененные значения.

Чтобы показать вам пример (13-6), я беру учебник:

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

И я изменяю его, включая кнопку и ее действие:

Button button = new Button("Modify"); button.setOnAction(new EventHandler() { @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 мог отслеживать изменения данных, вам необходимо выставить соответствующие поля в качестве свойств JavaFX. Добавьте следующие методы в class Person из учебника:

  public SimpleStringProperty firstNameProperty() { return firstName; } public SimpleStringProperty lastNameProperty() { return lastName; } public SimpleStringProperty emailProperty() { return email; } 

В обновлении TableView есть ошибка ( https://javafx-jira.kenai.com/browse/RT-22463 ). У меня была схожая проблема, и после некоторого поиска это мое обходное решение. Я обнаружил, что если столбцы удалены, а затем повторно добавлены, таблица обновляется.

 public static  void refreshTableView(TableView tableView, List> columns, List rows) { tableView.getColumns().clear(); tableView.getColumns().addAll(columns); ObservableList list = FXCollections.observableArrayList(rows); tableView.setItems(list); } 

Пример использования:

 refreshTableView(myTableView, Arrays.asList(col1, col2, col3), rows); 
Давайте будем гением компьютера.