Автообновление строк в TableView из модели

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

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

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

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

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

Я предполагаю, что это ошибка в табличном представлении, но есть ли шанс исправить это?

Спасибо!

Ответы на вопрос(2)

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

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


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

refreshTableView(myTableView, Arrays.asList(col1, col2, col3), rows);
Решение Вопроса

вам необходимо предоставить соответствующие поля в качестве свойств JavaFX. Добавить следующие методы вPerson класс из учебника:

    public SimpleStringProperty firstNameProperty() {
        return firstName;
    }

    public SimpleStringProperty lastNameProperty() {
        return lastName;
    }

    public SimpleStringProperty emailProperty() {
        return email;
    }
 Antonio J.06 июн. 2012 г., 16:09
Это просто работает. Это именно то, что я искал. Спасибо!
 04 февр. 2016 г., 08:11
Большой! Я предполагаю, что это работает с отражением, поэтому важно, чтобы получатели свойств имели правильное имя [атрибут] Свойство (). В моем случае я получил get [attribute] Property (), поэтому он не обновлялся. Спасибо!

Ваш ответ на вопрос