JavaFX MenuItem显示错误

时间:2019-06-27 09:34:04

标签: javafx

我在这里的第一个问题,希望我能正确描述我的问题。

我现在面对的是我想为JFXTreeTableView的某些条目显示一个上下文菜单。因此,我创建了一个名为“ ProjectTreeItemWithContextMenuTreeTableTableFactory”的新cellFactory,该工厂处理基于mouseReleasedEvent的contextMenu的创建并显示它。

由于我没有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());
    }
}

将菜单和menuItem添加到contextMenu并显示菜单。

private void handleMouseReleased(MouseEvent evt, ProjectTreeParentItemFX item) {
if (evt.getButton().equals(MouseButton.SECONDARY)) {
    setContentOfContextMenuBasedOnType(item); 
    contextMenu.show(getTreeTableRow(), evt.getScreenX(), evt.getScreenY());
    }
}

0 个答案:

没有答案