您可以在原始问题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无法解析为类型
我试图自己解决这个问题,但找不到解决方案。