JavaFX TableView Integer 不显示,而 String 项目是
JavaFX TableView Integer not displaying while String items are
我有一个包含这些列的程序:
showNameColumn.setCellValueFactory(new PropertyValueFactory<Show, String>("ShowName"));
epsWatchedColumn.setCellValueFactory(new PropertyValueFactory<Show, Integer>("EpsWatched;"));
showStatusColumn.setCellValueFactory(new PropertyValueFactory<Show, String>("ShowStatus"));
吸气剂被称为
getShowName()、getEpsWatched() 和 getShowStatus() 获取变量 showName、epsWatched 和 showStatus。
这是怎么回事?显示字符串但不显示整数。
你有一个“;”在传递给 属性 值工厂的字符串中,它不应该在那里。
这是错误的:
new PropertyValueFactory<Show, Integer>("EpsWatched;")
PropertyValueFactory 查找字符串和 属性 名称应遵循 Java bean 命名约定。有关详细信息,请参阅:
- Javafx PropertyValueFactory not populating Tableview
通常情况下,我会将问题作为上述问题的副本来关闭,但是,提问者要求提供具体答案并提出一些其他问题,因此此答案直接解决了这些问题。
建议使用 lambda 而不是 PropertyValueFactory,因为任何错误都将由编译器准确检测和报告,而不是在运行时失败。如需全面分析,请参阅:
how would I write a lamba for this?
在您的模型中 class 声明 属性 并为其提供访问器:
public class Show {
private final IntegerProperty numEpisodes = new SimpleIntegerProperty();
public final IntegerProperty numEpisodesProperty() {
return numEpisodes;
}
}
在 lambda 中使用 属性 访问器来定义单元格值工厂:
TableColumn<Show, Integer> numEpisodesCol = new TableColumn<>();
numEpisodesCol.setCellValueFactory(
data -> data.getValue().numEpisodesProperty().asObject()
);
另请参阅:
- Converting Integer to ObservableValue<Integer> in javafx
我有一个包含这些列的程序:
showNameColumn.setCellValueFactory(new PropertyValueFactory<Show, String>("ShowName"));
epsWatchedColumn.setCellValueFactory(new PropertyValueFactory<Show, Integer>("EpsWatched;"));
showStatusColumn.setCellValueFactory(new PropertyValueFactory<Show, String>("ShowStatus"));
吸气剂被称为 getShowName()、getEpsWatched() 和 getShowStatus() 获取变量 showName、epsWatched 和 showStatus。
这是怎么回事?显示字符串但不显示整数。
你有一个“;”在传递给 属性 值工厂的字符串中,它不应该在那里。
这是错误的:
new PropertyValueFactory<Show, Integer>("EpsWatched;")
PropertyValueFactory 查找字符串和 属性 名称应遵循 Java bean 命名约定。有关详细信息,请参阅:
- Javafx PropertyValueFactory not populating Tableview
通常情况下,我会将问题作为上述问题的副本来关闭,但是,提问者要求提供具体答案并提出一些其他问题,因此此答案直接解决了这些问题。
建议使用 lambda 而不是 PropertyValueFactory,因为任何错误都将由编译器准确检测和报告,而不是在运行时失败。如需全面分析,请参阅:
how would I write a lamba for this?
在您的模型中 class 声明 属性 并为其提供访问器:
public class Show {
private final IntegerProperty numEpisodes = new SimpleIntegerProperty();
public final IntegerProperty numEpisodesProperty() {
return numEpisodes;
}
}
在 lambda 中使用 属性 访问器来定义单元格值工厂:
TableColumn<Show, Integer> numEpisodesCol = new TableColumn<>();
numEpisodesCol.setCellValueFactory(
data -> data.getValue().numEpisodesProperty().asObject()
);
另请参阅:
- Converting Integer to ObservableValue<Integer> in javafx