Vaadin Grid鼠标中键

F43nd1r

我试图在vaadin网格中模拟正常的浏览器行为,其中包括单击鼠标中键以在新选项卡中打开:

addItemClickListener(e -> {
            boolean newTab = e.getMouseEventDetails().getButton() == MouseEventDetails.MouseButton.MIDDLE || e.getMouseEventDetails().isCtrlKey();
            //open in window or new tab
        }); 

但是,vaadin未注册鼠标中键。我该如何工作?

哈维尔

该功能已包含在vaadin-grid中(已加入Vaadin 10),在Vaadin 8中将不起作用。

对于Vaadin 8,您可以使用某些客户端扩展来拦截事件,也可以使用aComponentRenderer将a添加Panel到每个组件中(该方法有效,但并不理想,因为它会降低性能):

grid.addColumn(item->{
    Panel p = new Panel(item.getName());
    p.setStyleName(ValoTheme.PANEL_BORDERLESS);
    p.addClickListener(ev->{
        System.out.println(ev.getButtonName());             
    });
    return p;
}).setRenderer(new ComponentRenderer());

另一方面,客户端扩展允许监听javascript事件(例如MouseEvent)并作为响应触发服务器事件。创建扩展是一个非常复杂的主题(因为它使用了通常对开发人员隐藏的API的一部分),但是它允许直接访问渲染的DOM,否则是不可能的。

文档中的以下资源可能为您提供了一个起点:创建组件扩展(仅描述使用Java代码的简单扩展)以及集成JavaScript组件和扩展(说明如何向扩展中添加本机JavaScript代码)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章