Como adicionar uma tabela como um item (nó) em uma TreeTableView

votos
0

Eu estou tentando adicionar uma tabela dentro de uma TreeTableView como um item de árvore. É possível? Eu quero mostrar dados como abaixo. Por enquanto, ele é codificado mais tarde eu vou usar JPA para obter os dados do banco de dados.

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

Aqui é a minha abordagem. Em vez de adicionar a tabela (subTable)Eu também tentei com ObservableListmas o resultado é o mesmo.

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 + ];
    }

}

}

O que é o caminho certo para resolvê-lo ?. Alguém pode me ajudar nesse sentido ou alguma sugestão?

Publicado 02/09/2018 em 04:54
fonte usuário
Em outras línguas...                            

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