addItemClickListener(e -> {
boolean newTab = e.getMouseEventDetails().getButton() == MouseEventDetails.MouseButton.MIDDLE || e.getMouseEventDetails().isCtrlKey();
//open in window or new tab
});
但是,鼠标中键不是由Vaadin注册的。我怎么才能让这个起作用?
该功能包含在vaadin-grid中(它进入Vaadin10),在Vaadin8中不起作用。
对于Vaadin8,您可以使用某些客户端扩展截获事件,或者使用ComponentRenderer
向每个组件添加面板
(这很有效,但不理想,因为它降低了性能):
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,否则这是不可能的。
问题内容: Vaadin 7中的和组件有什么区别? 我应该使用哪个,什么时候使用? 问题答案: Grid是一个功能更强大的新组件,它应该是Table的后继组件(请参阅Table已死,Grid长寿)。因此,应该没有任何必要偏爱表格而不是网格。 这是Vaadin从表格迁移到网格的一系列文章的第一篇:https : //vaadin.com/blog/-/blogs/mission-rip- table
我正在尝试在联接。但是对我来说,缺少一个功能。我为员工创建了,这些网格分为特定的部门,但有员工,这些员工仅在部门中。 不允许在一上添加。 所以结果应该是这样的: 即使< code>Vaadin不直接允许,有什么解决方案可以让我这样做吗? 因为如果我尝试过,它会引发异常
是否可以将汇总行添加到Vaadin网格中? 我目前有一个网格,它有一个标题行来连接列,并在顶部提供了一个良好的概述。但是,我想在整个网格中添加类似的标题,以便标记一节的结束。似乎只能在header部分添加header,这将简单地填充网格的头部。页脚在底部也会这样做。 但是,如果我希望在网格中有一个特殊的行,而不必创建新的网格组件,该怎么办?一个可视的数据分隔符。
我已经将BigDecimal属性的列添加到网格中,并希望对此类列进行排序可以开箱即用: 添加:如果不使用NumberRenderer并以正常方式添加列,那么setSortedProperty将按预期工作:
我正在考虑这个问题的解决方案,但我不知道如何去做: 我的实体< code>StudentBook具有以下属性: 来自数据库的数据,它们看起来像: 字母字符可以用数值表示为 现在我想这样做: 将是学生的姓名 第一列将自动生成选定月份的天数(日期) “行”将具有点来自表-每个对应的日期 最后一行将类似于“总和行”,显示中每个学生的。 所以我创建了网格 方法返回 将学生的名字添加到各个< code >列