Jeg prøver å legge til en tabell inne i en TreeTableView som et tre element. Er det mulig? Jeg ønsker å vise data som nedenfor. For nå er det hardkodet senere vil jeg bruke JPA å få data fra databasen.
Name Designation
------------------------------------------
Tanvir WDD
Rezwan GD
Jacob HR
Harold HR
Her er min tilnærming. I stedet for å legge på bordet (subTable)
Jeg har også prøvd med ObservableList
, men resultatet er det samme.
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 + ];
}
}
}
Hva er den riktige måten å løse det ?. Kan noen hjelpe meg i denne forbindelse eller noen forslag?