Multi Line editable cell in tableview javafx

无人久伴 提交于 2019-12-11 06:42:30

问题


Hi I just want multi line cell in JavaFX which is editable.

@FXML
private TableColumn bookName;

  @Override
  public void initialize(URL url, ResourceBundle rb) {
        tableView.setEditable(true);
        //      setCellFactory();   
        bookName.setCellFactory(TextFieldTableCell.forTableColumn()); // If I comment this line and uncomment above line then cell will be multiline but not editable
        bookName.setOnEditCommit(
                new EventHandler<TableColumn.CellEditEvent<Books, String>>() {
            @Override
            public void handle(TableColumn.CellEditEvent<Books, String> t) {


                if (t.getNewValue().equals("") || t.getNewValue().length() < 3) {
                    info.setText("Book name must be greater than 3 characters.");
                    ((Books) t.getTableView().getItems().get(
                            t.getTablePosition().getRow())).setBookName(t.getOldValue());
                    return;

                }

                ((Books) t.getTableView().getItems().get(
                        t.getTablePosition().getRow())).setBookName(t.getNewValue());
            }
        });

    }

If I set custom cellFactory, cell will be multiline but not editable

private void setCellFactory() {

        Callback<TableColumn, TableCell> cellFactory = new Callback<TableColumn, TableCell>() {
            @Override
            public TableCell call(TableColumn param) {
                final TableCell cell = new TableCell() {
                    private Text text;

                    @Override
                    public void updateItem(Object item, boolean empty) {
                        super.updateItem(item, empty);
                        if (!isEmpty()) {
                            text = new Text(item.toString());
                            text.setWrappingWidth(140);
                            setGraphic(text);
                        }
                    }
                };
                return cell;
            }
        };

        bookName.setCellFactory(cellFactory);
    }

Not editable multiline cell.

来源:https://stackoverflow.com/questions/21773383/multi-line-editable-cell-in-tableview-javafx

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!