Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javafx 2 只有在调整列大小后,模型中的绑定更改才会反映在TableView中_Javafx 2 - Fatal编程技术网

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

Javafx 2 只有在调整列大小后,模型中的绑定更改才会反映在TableView中,javafx-2,Javafx 2,第一个示例工作正常,如果运行下一个示例,您将看到表。 选定行将反映在文本字段中。 保存更改后,由于模型属性与表格单元格绑定,更改会立即反映在tableview中 第二 双击后,表视图被隐藏,编辑表单被打开。 但在保存更改后,只有在调整列大小后,更改才会反映在表视图中 如何解决此问题?问题似乎是TableView没有更新,因为当属性更改时,它不是场景图的一部分。(这将是一个bug。)它在JavaFX8中运行良好(尽管您需要修改代码以确保FX节点在FX应用程序线程上初始化;即在initCompone

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

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


如何解决此问题?

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

要在JavaFX2.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);
        }
    });
}
private void openTable(){
Platform.runLater(新的Runnable(){
@凌驾
公开募捐{
table.setItems(FXCollections.observableArrayList());
vbox.getChildren().setAll(标签、表格);
表2.设置项目(数据);
}
});
}
(我稍微简化了您现有的代码;而且,您发布的代码不需要
平台。此处的runLater(…)
,因为
openTable()
仅从FX应用程序线程调用。但是,这在实际应用程序中可能有所不同。)