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