ComboBox in einem TreeTableView


MS-Tech

Erfahrenes Mitglied
#1
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:

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
 

MS-Tech

Erfahrenes Mitglied
#3
Hi Air,

ich wollte, dass die Combobox immer als Combobox angezeigt wird und nicht erst beim Editiervorgang, also nicht erst wenn die Combobox angeklickt wird.

Ich hab das aber schon gelöst.

Danke trotzdem für deine Hilfe.

Grüße
MS-Tech