JavaFX TableView Integer 不显示,而 String 项目是
Posted
技术标签:
【中文标题】JavaFX TableView Integer 不显示,而 String 项目是【英文标题】:JavaFX TableView Integer not displaying while String items are 【发布时间】:2021-12-30 02:24:21 【问题描述】:我有一个包含这些列的程序:
showNameColumn.setCellValueFactory(new PropertyValueFactory<Show, String>("ShowName"));
epsWatchedColumn.setCellValueFactory(new PropertyValueFactory<Show, Integer>("EpsWatched;"));
showStatusColumn.setCellValueFactory(new PropertyValueFactory<Show, String>("ShowStatus"));
getter 被调用 getShowName()、getEpsWatched() 和 getShowStatus() 获取变量 showName、epsWatched 和 showStatus。
这里有什么问题?显示字符串,但不显示整数。
【问题讨论】:
@jewelsea 而不是 int 没有做任何事情(不知道为什么会这样,它是一个包装类)。另外我将如何为此写一个lamba?我以前从未使用过它们(我知道它们,只是没有使用过它们),而且您列出的示例线程对我来说有点难以理解。我得到: showNameColumn.setCellValueFactory(cellData -> cellData.getValue().getShowName());当我试图弄乱它时,但这(可能很明显)给出了无法从 String 转换为 ObervableValue你有一个“;”在传递给属性值工厂的字符串中,它不应该存在。
这是错误的:
new PropertyValueFactory<Show, Integer>("EpsWatched;")
PropertyValueFactory 查找字符串和属性名称应遵循 Java bean 命名约定。有关详细信息,请参阅:
Javafx PropertyValueFactory not populating Tableview通常,我会将问题作为上述问题的副本来结束,但是,提问者要求提供具体答案并有一些其他问题,因此此答案直接解决了这些问题。
建议使用 lambda 而不是 PropertyValueFactory,因为任何错误都会被编译器准确检测和报告,而不是在运行时出现故障。如需全面分析,请参阅:
Java: setCellValuefactory; Lambda vs. PropertyValueFactory; advantages/disadvantages我将如何为此写一个lamba?
在您的模型类中声明属性并为其提供访问器:
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【讨论】:
就是这样,谢谢以上是关于JavaFX TableView Integer 不显示,而 String 项目是的主要内容,如果未能解决你的问题,请参考以下文章
JavaFX 9/10 不再可能覆盖 TableView.resizeColumnToFitContent