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