java - 将整数(非字符串)数据插入 JavaFX2 TableView

标签 java javafx javafx-2 tableview

所以我有一个正常工作的表并从 ObservableList 中获取数据使用此处的代码:

public void setMainTableData(ObservableList<FileMP3> list)
    {
        artistCol.setCellValueFactory(new PropertyValueFactory<FileMP3, String>("artist"));
        albumCol.setCellValueFactory(new PropertyValueFactory<FileMP3, String>("album"));
        titleCol.setCellValueFactory(new PropertyValueFactory<FileMP3, String>("title"));
        trackCol.setCellValueFactory(new PropertyValueFactory<FileMP3, String>("track"));
        yearCol.setCellValueFactory(new PropertyValueFactory<FileMP3, String>("year"));
        mainTable.setItems(list);
    }   

但这些列并不都包含字符串数据 - 我需要能够插入 int ,以及可能的其他类型,如 Duration . trackyear条目存储为整数,并且有一个(未显示)条目称为 length .这存储在我的 FileMP3 中对象作为 Duration ,并且在将数据插入表之前,我没有看到任何明显的方法来操作存储在那里的数据。我希望能够使用 Duration.getMillis()然后对其进行一些数学计算,使其成为可显示的 int格式,但我想将其存储在 FileMP3 中作为Duration .

我读过的所有关于该主题的教程都使用构造函数:

new PropertyValueFactory<FileMP3, String>("genre")

总而言之,我希望能够插入 String 以外的内容放入表中。

最佳答案

您可以将 String 替换为任何(引用,而非原始)类型。例如:

TableColumn<FileMP3, Integer> yearCol = new TableColumn<>("Year");
yearCol.setCellValueFatory(new PropertyValueFactory<FileMP3, Integer>("year"));

与持续时间(而不是整数)类似。

默认情况下,将通过对单元格中的值调用 toString() 来显示单元格中的值。如果您希望值以不同方式显示,您可以创建一个自定义单元格工厂(不同于单元格值工厂):

TableColumn<FileMP3, Integer> durationCol = new TableColumn<>("Duration");
durationCol.setCellValueFactory(new PropertyValueFactory<FileMP3, Duration>("duration"));
durationCol.setCellFactory(new Callback<TableColumn<FileMP3, Duration>, TableCell<FileMP3, Duration>>() {
    @Override
    public TableCell<FileMP3, Duration> call(TableColumn<FileMP3, Duration> col) {
        return new TableCell<FileMP3, Duration>() {
            @Override
            protected void updateItem(Duration duration, boolean empty) {
                super.updateItem(duration, empty);
                if (empty) {
                    setText(null);
                } else {
                    setText(Double.toString(duration.toMillis());
                }
            }
        };
    }
});

关于java - 将整数(非字符串)数据插入 JavaFX2 TableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20556805/

相关文章:

javafx - 如何获取对通过 fx :id in javafx? 描述的节点的引用

java - 如何获取 JavaFX Stage 的 AWT 窗口?

user-interface - 如何在JavaFX的ListView中获取项目的位置?

java - 使用 SparkConf 连接到远程 Cassandra 集群时如何获得 pass "requires authentication"?

Java - 从 File[] 数组中删除一些文件

java - Android使用抽屉导航滑动菜单

java - 如何在 JavaFX 2 中将 ArrayList 从一个场景传递到另一个场景?

deployment - 部署JavaFX应用程序时出现运行时错误

java - Java参数化构造函数和参数化接口(interface)的Scala编译错误

java - 识别 selenium 中的链接(未提供 id 或类)