How to put ComboBoxTableCell in a TableView?

14,521

The part of the problem is that you're trying to set cell factory into cell value factory field of TableColumn. Try this instead:

ObservableList<String> cbValues = FXCollections.observableArrayList("1", "2", "3");

TableColumn<Map, String> column2 = new TableColumn<>(Desglose2);
column2.setCellFactory(ComboBoxTableCell.forTableColumn(new DefaultStringConverter(), cbValues));
Share:
14,521
user3292323
Author by

user3292323

Updated on June 05, 2022

Comments

  • user3292323
    user3292323 almost 2 years

    I'm trying to put a ComboBox in a table cell, but I can't. the code is the next:

    private void cargaTablaDesglose() {
        TableColumn<Map, String> column1 = new TableColumn<>(Desglose1);
        TableColumn<Map, String> column2 = new TableColumn<>(Desglose2);
        TableColumn<Map, String> column3 = new TableColumn<>(Desglose3);
    
        column1.setCellValueFactory(new MapValueFactory(Desglose1));
        column1.setMaxWidth(0);
        column2.setCellValueFactory(new ComboBoxTableCell.forTableColumn(null));
        column2.setPrefWidth(150);
        column3.setCellValueFactory(new MapValueFactory(Desglose3));
        column3.setPrefWidth(250);
    
        if (CUOD.modifyData()) {
            column2.setOnEditCommit((TableColumn.CellEditEvent<Map, String> t) -> {
                actualizaObra(t.getRowValue(), t.getNewValue());
            });
                }
    
        tablaDesglose.getItems().clear();
        tablaDesglose.setEditable(true);
        tablaDesglose.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
        tablaDesglose.getSelectionModel().setCellSelectionEnabled(false);
        tablaDesglose.getColumns().clear();
        tablaDesglose.getColumns().addAll(column1, column2, column3);
    
        Callback<TableColumn<Map, String>, TableCell<Map, String>> cellFactoryMap
                = CUCF.getFactoryMap();
        column1.setCellFactory(cellFactoryMap);
        column2.setCellFactory(cellFactoryMap);
        column3.setCellFactory(cellFactoryMap);
    }
    

    It says that can't found forTableColumn method of ComboBoxTableCell