只有在调整列大小后,模型中的绑定更改才会反映在TableView中

时间:2014-01-16 14:40:42

标签: javafx-2

第一个示例正常工作,如果您运行下一个code,您将看到表格。 选定的行反映在文本字段中。 保存更改后,它们立即反映在tableview中,因为模型属性到表格单元格绑定。

在第二个sample 双击表视图后隐藏并打开编辑表单。 但是在保存更改之后,只有在列大小调整后才会在表视图中反映出来。

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

问题似乎是TableView没有更新,因为它在属性更改时不是Scene图的一部分。 (这将是一个错误。)它在JavaFX8中运行良好(尽管您需要修改代码以确保在FX应用程序线程上初始化FX节点;即在initComponents()方法中)。

对于在JavaFX 2.2中使其工作的(相当难看的)解决方法,请尝试以下操作:

private void openTable() {
    Platform.runLater(new Runnable() {
        @Override
        public void run() {
            table.setItems(FXCollections.<Person>observableArrayList());
            vbox.getChildren().setAll(label, table);
            table.setItems(data);
        }
    });
}

(我稍微简化了您现有的代码;此外,您发布的代码不需要Platform.runLater(...),因为openTable()只能从FX应用程序线程中调用。但是,这可能会有所不同在你的实际应用中。)