Hallo Zusammen,
es gibt zig Beispiele mit einer ComboBox in einem Tableview, aber ich benötige eine ComboBox in einem TreeTableView. Ich habe das auf herkömmliche Weise gemacht und es funktioneirt auch soweit, jedoch wird die ComboBox erst beim Editieren angezeigt. Ich hätte aber gern, dass die Combobox immer angezeigt wird.
Anbei mein Code:
Soweit funktioniert das alles schon, jedoch wird die ComboBox erst beim Editieren angezeigt. Hat jemand ne Idee?
Grüße
MS-Tech
es gibt zig Beispiele mit einer ComboBox in einem Tableview, aber ich benötige eine ComboBox in einem TreeTableView. Ich habe das auf herkömmliche Weise gemacht und es funktioneirt auch soweit, jedoch wird die ComboBox erst beim Editieren angezeigt. Ich hätte aber gern, dass die Combobox immer angezeigt wird.
Anbei mein Code:
Java:
column.setCellValueFactory(new Callback<TreeTableColumn.CellDataFeatures<File, Config>, ObservableValue<Config>>() {
@Override
public ObservableValue<Config> call(TreeTableColumn.CellDataFeatures<File, Config> param) {
TreeItem<Config> treeItem = param.getValue();
PlaylistFile playListFile = treeItem.getValue();
// return new SimpleObjectProperty<Config>(file.getConfig());
//
//
SimpleObjectProperty<Config> objectProp = new SimpleObjectProperty<Config>(file.getConfig());
objectProp.addListener(new ChangeListener<Config>() {
@Override
public void changed(ObservableValue<? extends Config> observable, Config oldValue,
ConfignewValue) {
file.setConfig(newValue);
}
});
return objectProp;
}
});
Java:
column.setOnEditCommit(new EventHandler<TreeTableColumn.CellEditEvent<File, Config>>() {
@Override
public void handle(TreeTableColumn.CellEditEvent<File, Config> event) {
TreeItem<File> item = event.getRowValue();
File file = item.getValue();
Config newConfig = event.getNewValue();
file.setConfig(newLedConfig);
}
});
Java:
column.setCellFactory(column -> {
return new ComboBoxTreeTableCell<File, Config>(listConfigurations) {
/* (non-Javadoc)
* @see javafx.scene.control.cell.TextFieldTreeTableCell#updateItem(java.lang.Object, boolean)
*/
@Override
public void updateItem(Config item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setGraphic(null);
setEditable(false);
} else {
File file = getTreeTableRow().getItem();
if (file != null) {
if (file.isFirst) {
setEditable(true);
if (file.getConfig() != null) {
setItem(file.getConfig());
} else {
setItem(null);
}
} else {
setGraphic(null);
setEditable(false);
}
} else {
setGraphic(null);
setEditable(false);
}
}
}
};
});
Soweit funktioniert das alles schon, jedoch wird die ComboBox erst beim Editieren angezeigt. Hat jemand ne Idee?
Grüße
MS-Tech