JavaFX: добавить контекстное меню в ячейку TableView - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь добавить контекстное меню для каждой отдельной ячейки в столбце, которое активируется щелчком правой кнопкой мыши на ячейке. Элементы меню также зависят от выбранной ячейки.

Я бы подумал, что использование фабрики ячеек было бы лучшим способом, но я не могу понять, как это сделать.

Редактировать: это моя реализация для одного из моих столбцов. setText в updateItem () добавляет текст в мой столбец, но я хочу добавить его в качестве метки, как мне это сделать?

moColumn = new TableColumn<>("Maandag");
    moColumn.setSortable(false);
    moColumn.setCellValueFactory(new PropertyValueFactory<>("Mo"));
    getColumns().add(moColumn);
    moColumn.setCellFactory(new Callback<TableColumn<RowData, Label>, TableCell<RowData, Label>>() {
        @Override
        public TableCell<RowData, Label> call(TableColumn<RowData, Label> col) {
            final TableCell<RowData, Label> cell = new TableCell<RowData, Label>() {
                @Override
                protected void updateItem(Label item, boolean empty) {
                    super.updateItem(item, empty);
                    if(empty){
                        setText(null);
                    } else {
                        setText(item.getText());
                    }
                }
            };

            //cell.textProperty().bind(cell.getItem().textProperty());

            cell.setOnMouseClicked(new EventHandler<MouseEvent>() {
                @Override
                public void handle(MouseEvent event) {
                    if(event.getButton() == MouseButton.SECONDARY){
                        ContextMenu contextMenu = new ContextMenu();
                        MenuItem menuItem = new MenuItem(cell.getText());
                        contextMenu.getItems().add(menuItem);
                        cell.setContextMenu(contextMenu);
                    }
                }
            });
            return cell;
        }
    });

Редактировать: Как я могу щелкнуть правой кнопкой мыши по ячейке в табличном представлении в Javafx (fxml)? Я нашел это, но ссылка на блог больше не работает ...

1 Ответ

0 голосов
/ 29 апреля 2018

Изменено:

@Override
            protected void updateItem(Label item, boolean empty) {
                super.updateItem(item, empty);
                if(empty){
                    setText(null);
                } else {
                    setText(item.getText());
                }
            }

Кому:

@Override
            protected void updateItem(Label item, boolean empty) {
                super.updateItem(item, empty);
                if(empty){
                    setText(null);
                } else {
                    setGraphic(item);
                }
            }
...