在系统自带的过滤器组件中,随意双击过滤器中某处,可以获取到这个双击事件吗
你好,请参考下面的代码:
// 注意这里用 FilterImpl 实现类注入。而不是用 Filter 接口注入。
@Autowired
private FilterImpl filter;
@Autowired
private Notifications notifications;
@Subscribe
public void onAfterShow(AfterShowEvent event) {
var groupBoxLayout = filter.getComposition(); // 获取 filter 的 GroupBox
var jmixGrpbox = groupBoxLayout.unwrap(JmixGroupBox.class); // unwrap 之后才能添加 ClickListener
jmixGrpbox.addClickListener((e)->{
var mouseEventDetails = e.getMouseEventDetails();
if(mouseEventDetails.isDoubleClick()){ // 检测是双击
notifications.create(Notifications.NotificationType.TRAY)
.withDescription("double clicked")
.withHideDelayMs(1000)
.show();
filter.setExpanded(!filter.isExpanded()); // 比如可以双击收起或者展开过滤器。
}
});
}
2 个赞
好的,谢谢