第一个示例正常工作,如果您运行下一个code,您将看到表格。 选定的行反映在文本字段中。 保存更改后,它们立即反映在tableview中,因为模型属性到表格单元格绑定。
在第二个sample 双击表视图后隐藏并打开编辑表单。 但是在保存更改之后,只有在列大小调整后才会在表视图中反映出来。
如何解决此问题?
答案 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应用程序线程中调用。但是,这可能会有所不同在你的实际应用中。)