我正在尝试执行以下操作:
tableColumns[0].setCellValueFactory(
new PropertyValueFactory<DiaryEntry,String>("username")
);
tableColumns[1].setCellValueFactory(
new PropertyValueFactory<DiaryEntry,Project>("project")
);
所以第一个完美无缺。它在我的类&#34; DiaryEntry&#34;中使用了getUsername()方法。为了显示字符串。第二个是使用Method getProject()并尝试将Project添加到我的表中。当这样做时,我最终会得到像&#34; 2xProject2353asxk&#34;这样的东西。这非常有意义,因为它不能简单地在表格中显示Project对象。
在我的班级项目中,我有一个getter&#34; getName()&#34;。所以我的问题是:有什么办法可以改变我的第二个声明,以便表格会输入项目的名称吗?我读了几个关于setCellValueFactory()方法的帖子,但我仍然无法解决问题。
答案 0 :(得分:3)
除cellFactory
cellValueFactory
tableColumns[1].setCellValueFactory(
new PropertyValueFactory<DiaryEntry,Project>("project")
);
tableColumns[1].setCellFactory(col -> new TableCell<DiaryEntry, Project>() {
@Override
protected void updateItem(Project project, boolean empty) {
super.updateItem(project, empty);
if (empty) {
setText(null);
} else {
setText(project.getName());
}
}
});
cellValueFactory
告诉列在其单元格中显示的值; cellFactory
告诉它如何显示该值。