如何修复网格中的对象集?

2024-05-01

在我的应用程序中,我有一个类:

public class Team {
    private Country teamId;
    private Set<Player> playerSet;
    private Set<Player> substitutes;
    private Set<Coach> coachSet; 
}

当我实例化一个网格时:

Grid<Team> grid = new Grid<>(Team.class);

并从数据库中设置 allTeam(),它显示playerSet 和 coachSet 的对象。

我的问题是我只想显示球员姓名和教练姓名通过 , 或 \n 连接。

知道我该怎么做吗?作为初学者,这对我来说很复杂


我看到三个选项。

第一个选项是您已经找到的选项:将它们的名称连接在一个字符串中。这可以这样做:

grid.addColumn(team -> {
    Set<String> coachNames = new HashSet<>();
    for (Coach coach : team.getCoaches()){
        coachNames.add(coach.getName());
    }
    return String.join(", ", coachNames);
});

第二种是利用网格项目详细信息 - 您可以在项目详细信息中显示教练网格。由于您想同时显示教练和球员,因此此选项可能不是最好的,但我想提一下这种可能性。 (在项目详细信息中放置两个网格是可能的,但很奇怪。这不是最佳的用户体验。)

grid.setItemDetailsRenderer(new ComponentRenderer<>(team -> {
    Grid<Coach> coachGrid = new Grid<>(Coach.class);
    coachGrid.setItems(team.getCoaches());
    return coachGrid;
}));

第三种选择是将团队网格放在视图的一侧,而在另一侧显示团队网格所选项目的一些相关内容。您可以为教练设置一个单独的网格,一个用于球员,一个用于替补。如果您愿意,您也可以将此团队详细布局实现为单独的视图。如果您的团队对象会因更多集、集合和其他相关属性而变得更加复杂,则此选项将变得更有吸引力,因为这是相当可伸缩的/可扩展的。

grid.addSelectionListener(event -> {
    if(event.getFirstSelectedItem().isPresent()){
        buildTeamDetails(event.getFirstSelectedItem().get())
    }
})

private void buildTeamDetails(Team team){
    // build your team detail layouts here
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何修复网格中的对象集? 的相关文章

随机推荐