我正在使用托盘通知让用户了解一些待处理操作。它工作正常但很想能够点击它并做我需要它做的事情,如显示正确的屏幕等。可悲的是,我找不到像其他组件一样的点击监听器。
我错过了什么吗?
答案 0 :(得分:1)
据我所知,Vaadin 7或8中的default notification无法实现。
如果您正在使用Vaadin 7,您可以使用非模态窗口(或类似的东西)伪造它,或使用提供{{1的fancy-layouts add-on(也兼容8)组件(online demo和source)。它不完全相同,但可能提供您所需要的东西。另外要小心选择v7版本并添加建议的maven repo。
基本用法:
FancyNotifications
<强>结果:强>
如果您使用的是8,则notify add-on(online demo和github page)支持点击监听器。请注意,此附加组件目前支持Vaadin 8,适用于支持Notification API的浏览器:
开发主要在Chrome上完成。 Firefox也经过测试,主要按计划运行。其他浏览器仍未测试。据我所知,IE11和Edge不支持Notification API。无论如何,加载项只能用于在支持Notification API的浏览器上显示通知。
来自github demo:
public class MyUi extends UI {
@Override
protected void init(VaadinRequest request) {
FancyNotifications fancyNotifications = new FancyNotifications();
fancyNotifications.setPosition(FancyNotificationsState.Position.BOTTOM_RIGHT);
Button button = new Button("Show notification", buttonClickEvent -> {
FancyNotification fancyNotification = new FancyNotification(null, "Meh", "Click me to navigate to GITHUB");
fancyNotification.getTitleLabel().setContentMode(ContentMode.HTML);
fancyNotification.getDescriptionLabel().setContentMode(ContentMode.HTML);
fancyNotification.addLayoutClickListener(notificationClickEvent -> Page.getCurrent().setLocation("https://github.com/alump/FancyLayouts"));
fancyNotifications.showNotification(fancyNotification);
});
VerticalLayout content = new VerticalLayout();
content.setSizeFull();
setContent(content);
content.addComponents(button, fancyNotifications);
content.setComponentAlignment(button, Alignment.MIDDLE_CENTER);
}
}
......看起来像是: