正确使用 setCellValueFactory
correct usage of setCellValueFactory
我正在尝试执行以下操作:
tableColumns[0].setCellValueFactory(
new PropertyValueFactory<DiaryEntry,String>("username")
);
tableColumns[1].setCellValueFactory(
new PropertyValueFactory<DiaryEntry,Project>("project")
);
所以第一个工作得很好。它使用我的 class "DiaryEntry" 中的 getUsername() 方法来显示字符串。第二个是使用方法 getProject() 并尝试将项目添加到我的 table。这样做时,我最终会得到类似“2xProject2353asxk”的东西。这很有意义,因为它不能简单地在 table.
中显示 Project 对象
在我的 Class 项目中,我有一个 getter "getName()"。所以我的问题是:有什么方法可以更改我的第二个语句,以便 table 将输入项目名称?我阅读了几个关于 setCellValueFactory() 方法的线程,但我仍然无法找到解决方案。
除了 cellValueFactory
之外还使用 cellFactory
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
告诉它如何 显示值。
我正在尝试执行以下操作:
tableColumns[0].setCellValueFactory(
new PropertyValueFactory<DiaryEntry,String>("username")
);
tableColumns[1].setCellValueFactory(
new PropertyValueFactory<DiaryEntry,Project>("project")
);
所以第一个工作得很好。它使用我的 class "DiaryEntry" 中的 getUsername() 方法来显示字符串。第二个是使用方法 getProject() 并尝试将项目添加到我的 table。这样做时,我最终会得到类似“2xProject2353asxk”的东西。这很有意义,因为它不能简单地在 table.
中显示 Project 对象在我的 Class 项目中,我有一个 getter "getName()"。所以我的问题是:有什么方法可以更改我的第二个语句,以便 table 将输入项目名称?我阅读了几个关于 setCellValueFactory() 方法的线程,但我仍然无法找到解决方案。
除了 cellValueFactory
cellFactory
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
告诉它如何 显示值。