Comment ajouter une table comme un élément (noeud) dans un TreeTableView

voix
0

Je suis en train d'ajouter une table à l'intérieur d'un TreeTableView comme un élément de l'arborescence. C'est possible? Je veux montrer des données comme ci-dessous. Pour l'instant, il est plus tard, je vais hardcoded utiliser JPA pour obtenir les données de la base de données.

Name        Designation
------------------------------------------  
Tanvir      WDD
Rezwan      GD
   Jacob      HR
   Harold     HR

Voici mon approche. Au lieu d'ajouter la table (subTable)j'ai aussi essayé avec , ObservableListmais le résultat est le même.

public class UserObjectTreeTest implements Initializable {

@FXML
private TreeTableView<Object> treeTable;
@FXML
private TreeTableColumn<Object, String> colDesignation;
@FXML
private TreeTableColumn<Object, String> colUserName;

private TableView<Object> subTable = new TableView<Object>();
private TableColumn colName = new TableColumn<>(Name);;

private TableColumn colDesig = new TableColumn<>(Designation);

ObservableList<Object> data = FXCollections.observableArrayList(new Person(Jacob, HR),
        new Person(Harold, HR)

);

TreeItem<Object> user1 = new TreeItem<>(new Person(Aritra, SD));
TreeItem<Object> user2 = new TreeItem<>(new Person(Tanvir, WDD));
TreeItem<Object> user3 = new TreeItem<>(new Person(Rezwan, GD));
TreeItem<Object> user4 = new TreeItem<>(subTable);

TreeItem<Object> root = new TreeItem<>(new Person(Name, Designation));

@Override
public void initialize(URL arg0, ResourceBundle arg1) {
    // TODO Auto-generated method stub

    user3.getChildren().add(user4);

    colUserName.setCellValueFactory((cellData) -> ((Person) cellData.getValue().getValue()).nameProperty());        
    colDesignation.setCellValueFactory((celldata) -> ((Person) celldata.getValue().getValue()).designationProperty());

    colName.setCellValueFactory(new PropertyValueFactory<Person, String>(String));
    colDesig.setCellValueFactory(new PropertyValueFactory<Person, String>(String));

    subTable.setItems(data);
    subTable.getColumns().addAll(colName, colDesig);
    root.getChildren().setAll(user1, user2, user3);
    treeTable.setRoot(root);
    treeTable.setShowRoot(true);

}

class Person {
    private StringProperty name = new SimpleStringProperty();
    private StringProperty designation = new SimpleStringProperty();

    public Person() {

    }

    public Person(String name, String designation) {

        this.name = new SimpleStringProperty(name);
        this.designation = new SimpleStringProperty(designation);
    }

    public final StringProperty nameProperty() {
        return this.name;
    }

    public final String getName() {
        return this.nameProperty().get();
    }

    public final void setName(final String name) {
        this.nameProperty().set(name);
    }

    public final StringProperty designationProperty() {
        return this.designation;
    }

    public final String getDesignation() {
        return this.designationProperty().get();
    }

    public final void setDesignation(final String designation) {
        this.designationProperty().set(designation);
    }

    @Override
    public String toString() {
        return person [name=   name   , designation=   designation   ];
    }

}

}

Quelle est la bonne façon de résoudre ?. Quelqu'un peut-il me aider à cet égard ou toute suggestion?

Créé 02/09/2018 à 04:54
source utilisateur
Dans d'autres langues...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more