TableColumn应仅显示复杂数据类型的一个特定值

时间:2015-06-30 11:15:47

标签: java javafx tablecolumn

您可以在原始问题https://stackoverflow.com/a/31137182/4469105

找到答案

我需要JavaFX TableColumn来仅显示复杂数据类型的一个特定值(Issue.class)。 这是我的一些代码:

Issue.class

public class Issue {
    private String id;
    private String name;
    private List<Issue> dependencies;

    //Getter
    ....
}

TableView.class

public TableView createIssueTable() {

    TableColumn<Issue, String> firstCol = new TableColumn<>("ID");
    TableColumn<Issue, String> secondCol = new TableColumn<>("Name");
    TableColumn<Issue, List<Issue>> thirdCol = new TableColumn<>(
            "Dependencies");

    PropertyValueFactory<Issue, String> firstColFactory = new PropertyValueFactory<>(
            "id");
    PropertyValueFactory<Issue, String> secondColFactory = new PropertyValueFactory<>(
            "name");
    PropertyValueFactory<Issue, List<Issue>> thirdColFactory = new PropertyValueFactory<>(
            "dependencies");

    firstCol.setCellValueFactory(firstColFactory);
    secondCol.setCellValueFactory(secondColFactory);
    thirdCol.setCellValueFactory(thirdColFactory);

    myTableview.getColumns().addAll(....);
    return myTableview;
}

当我使用数据填充表格时,第3列(<Issue, List<Issue>>)显示类似[Issue [i1, issuee01, ...] [...]]的内容。 我希望第3列仅显示id的{​​{1}}。 我跟Issue搞砸了但是没用。 有没有人知道如何做到这一点?

更新1 : 我试着用这个:

setCellValueFactory(...)

代表thirdCol.setCellValueFactory( ( TableColumn.CellDataFeatures<Person, String> p ) -> { List<Person> friends = p.getValue().getFriends(); String val = friends .stream() .map( item -> item.getName() ) .reduce( "", ( acc, item ) -> acc + ", " + item ); return new ReadOnlyStringWrapper( val ); });

Issue.class

但我无法编译,因为:

TableColumn&gt;类型中的方法setCellValueFactory(Callback&gt;,ObservableValue&gt;&gt;)不适用于参数((TableColumn.CellDataFeatures&gt; p) - &gt; {})

ReadOnlyStringWrapper无法解析为类型

我试图自己解决这个问题,但找不到解决方案。

0 个答案:

没有答案