1

使用 Vaadin Flow (11.0.0) 时,应该可以GridContextMenu(1.0.0) 一起使用。请参阅问题https://github.com/vaadin/vaadin-context-menu-flow/issues/5

这是我到目前为止所拥有的:

@Route("menu")
public class MenuTestView extends VerticalLayout {

    public MenuTestView() {
        final Grid<String> g = new Grid<>();
        g.setWidth("20em");
        g.addColumn(s -> s).setHeader("Word");
        g.addColumn(s -> s.length()).setHeader("Length");
        g.setItems("The quick brown fox jumps over the lazy dog".split("\\s+"));

        final Label label = new Label();

        final ContextMenu contextMenu = new ContextMenu();
        contextMenu.setTarget(g);

        contextMenu.addItem("Item 1", e -> label.setText(e.getSource().getText()));
        contextMenu.addItem("Item 2", e -> label.setText(e.getSource().getText()));

        add(g, label);
    }

}

问题:

  • Vaadin Flow有什么例子吗?
  • 在我们的用例中,ContextMenu只有将鼠标悬停在选定的行上时才应该启用。如何做到这一点?
  • 如何根据激活上下文菜单时的鼠标位置选择一行?
4

1 回答 1

3

vaadin-grid-flow 1.2 带来了特别的支持,使网格和上下文菜单可以很好地结合在一起。它是三天前发布的。以前可以使它们一起工作,但是事件没有告诉上下文菜单是在哪个项目上触发的。见https://github.com/vaadin/vaadin-grid-flow/releases/tag/1.2.0

您可以通过将以下内容添加到 pom.xml 来将您的网格升级到 1.2。

<dependency>
    <groupId>com.vaadin</groupId>
    <artifactId>vaadin-grid-flow</artifactId>
    <version>1.2.0</version>
</dependency>

这是测试中的示例用法:https ://github.com/vaadin/vaadin-grid-flow/blob/master/src/test/java/com/vaadin/flow/component/grid/it/ContextMenuGridPage.java

    GridContextMenu<Person> contextMenu = grid.addContextMenu();
    contextMenu.addItem("Show name of context menu target item", e -> {
        String name = e.getItem().map(Person::getName)
                .orElse("no target item");
        message.setText(name);
    });
于 2018-09-16T17:42:19.667 回答