Javafx: табличное представление отношений ManyToMany - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь создать табличное представление, которое показывает каждое действие и участников, которые участвуют. У действия есть список участников, и у участника есть список действий. Я застрял при получении столбцов для отображения имени действия и участника этого действия. Я хотел бы показать комбинацию элемента активности в каждой строке. Я также не уверен, как я должен заполнить таблицу, так как я передаю список действий.

Это то, к чему я стремлюсь.

+----------+------------+-------------+----------------+-------------+
| Activity |    Type    | Member name | Member surname | Member rank |
+----------+------------+-------------+----------------+-------------+
| act1     | Internship | Peter       | Peterson       |           1 |
| act1     | Internship | Bob         | Bobber         |           3 |
| act2     | Sport      | Tim         | Tom            |           1 |
| act2     | Sport      | Bob         | Bobber         |           3 |
+----------+------------+-------------+----------------+-------------+
    public class ActivityListController extends GridPane {

    @FXML
    private TableView<Activity> tblActivities;
    @FXML
    private TableColumn<Activity, String> colActivityName;
    @FXML
    private TableColumn<Activity, String> colType;
    @FXML
    private TableColumn<Activity, List<String>> colFirstName;
    @FXML
    private TableColumn<Activity, String> colLastName;
    @FXML
    private TableColumn<Activity, String> colRank;
    private final DomeinController dc;

    public ActivityListController(DomainController dc) {
        this.dc = dc;
        FXMLLoader loader = new FXMLLoader(getClass().
                getResource("ActivityList.fxml"));
        loader.setController(this);
        loader.setRoot(this);
        try {
            loader.load();
        } catch (IOException ex) {
            throw new RuntimeException(ex);
        }
        colActivity.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getName()));
        colActivy.setCellFactory(TextFieldTableCell.forTableColumn());
        colFirstName.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getMembers().???));
        colLastName.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getMembers().???));
        colRank.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getMembers().???));

        tblActivities.setItems(dc.getAllActivities());
    }
...