作者:mobiledu2502908023 | 来源:互联网 | 2023-09-23 14:53
我是 Vaadin 框架的新手,我想知道是否有办法捕获 Anchor 的默认点击事件?(Vaadin14,仅限 Java - v11)
我知道我可以这样做:
Anchor download = new Anchor()
download.getElement().addEventListener("click", event -> doStuff())
但它似乎不是内置的点击侦听器,因为我可以添加带有 StreamResource 的锚点。然后,单击 Anchor 开始文件下载 - 无需添加任何其他侦听器。
回答这些问题中的任何一个都可以解决我的问题,我相信:
- 有没有办法捕捉这个锚点点击事件?
- 有没有办法像 Button click() 方法那样在代码中以编程方式触发它?
- 如果它是@DomEvent,那么这是什么类型的@DomEvent?
回答
您实际上是将锚点用作链接还是按钮?如果是后者,您可以只使用 Button 并将其样式设置为链接。
回答您的问题:
- 你的方式,
addEventListener("click", e ->
download.getElement().callFunction("click")
(同clickInClient
)
- 我不认为这对你来说很重要。您所需要的只是对事件做出反应,如果您需要一些数据,您可以使用
addEventData()
您也可以尝试将Anchor
实现ClickNotifier
mixin 接口的子类化,该接口将为您提供该addClickListener()
方法,然后您也可以ClickEvent
手动触发它,就像在按钮的click()
public class ClickableAnchor extends Anchor implements ClickNotifier {
public void click() {
fireEvent(new ClickEvent<>(this, false, 0, 0, 0, 0, 0, 0, false, false,
false, false));
}
public void clickInClient() {
getElement().callJsFunction("click");
}
}