JavaFX MenuItem ошибка отображения - PullRequest
0 голосов
/ 27 июня 2019

Мой первый вопрос здесь, поэтому я надеюсь, что смогу правильно описать свою проблему.

Сейчас я сталкиваюсь с тем, что я хочу отобразить контекстное меню для некоторых записей JFXTreeTableView.Поэтому я создал новый cellFactory под названием «ProjectTreeItemWithContextMenuTreeTableFactory», который обрабатывает создание contextMenu на основе mouseReleasedEvent и отображает его.

Из-за того, что у меня нет 10 репутаций, я не могу публиковать изображения, но в качестве примера, что не работает, я пытаюсьописать это.Если я открою контекстное меню, оно отобразится в правильной позиции.При наведении курсора на пункт меню отображаются элементы меню, но они не отображаются прямо рядом с меню.Иногда между элементами меню и меню, которые зависли, может быть огромный разрыв ... Что я заметил, так это то, что эта проблема возникает только при первом наведении курсора на меню.При повторном наведении курсора на меню, когда contextMenu остается открытым, все будет отображаться правильно.

private class TreeTableCallback extends TreeTableCell<T, ProjectTreeParentItemFX> {

@Override
protected void updateItem(ProjectTreeParentItemFX item, boolean empty) {
    super.updateItem(item, empty);
    if (item == null || empty) {
        setText(null);
        setGraphic(null);
        setContextMenu(null);
    } else {
        this.setOnMouseReleased(evt -> handleMouseReleased(evt, item));
        setText(item.getDisplayText());
    }
}

Добавление меню и элементов menu в contextMenu и отображение меню.

private void handleMouseReleased(MouseEvent evt, ProjectTreeParentItemFX item) {
if (evt.getButton().equals(MouseButton.SECONDARY)) {
    setContentOfContextMenuBasedOnType(item); 
    contextMenu.show(getTreeTableRow(), evt.getScreenX(), evt.getScreenY());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...