我是vaadin的新手。我有一个像
这样的链接链接链接=新链接("",新的ExternalResource(redirectURL));
我的要求是,我必须在用户点击链接时设置值。用户单击链接时是否可以添加侦听器。或者,如果单击链接,还有其他设置值的方法。
答案 0 :(得分:7)
要捕获链接或标签上的onClick,我总是创建一个HorizontalLayout
并将组件放入其中:
HorizontalLayout hor = new HorizontalLayout();
final Link link = new Link("Click on Me!", new ExternalResource("http://www.google.com"));
hor.addComponent(link);
hor.addLayoutClickListener(new LayoutClickListener() {
@Override
public void layoutClick(LayoutClickEvent event) {
// capture the click here and do whatever you'd like to do, e.g.
// if ( event.getClickedComponent() != null ) {
// if(event.getClickedComponent().equals(link)) {}
}
});
答案 1 :(得分:3)
我将您的问题解释为更改链接的标题。据我所知,它不可能与Link组件有关。看一下activelink插件:http://vaadin.com/addon/activelink。
此插件的行为类似于链接,可让您向其添加LinkActivatedListener
。代码应如下所示:
final ActiveLink link = new ActiveLink("", new ExternalResource(redirectURL));
link.addListener(new LinkActivatedListener() {
@Override
public void linkActivated(LinkActivatedEvent event) {
link.setCaption("newCaption");
}
});
答案 2 :(得分:1)
您可以使用新的BrowserWindowOpener类:
来自API:
组件扩展,在打开浏览器弹出窗口时 单击扩展组件。
示例:
BrowserWindowOpener browserWindowOpener = new BrowserWindowOpener(new ExternalResource("http://google.com"));
/*
* Apparently, the BrowserWindowOpener method setWindowName uses the HTML5 target
* attribute (no longer deprecated as it was in HTML4).
* So you can use either a frame name, or one of four special attribute values:
* _blank, _self, _parent, _top
*
* browserWindowOpener.setWindowName();
*/
final Button btn = new Button("Click me");
browserWindowOpener.extend(btn);
btn.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
btn.setCaption("clicked");
}
});
更多信息here。
答案 3 :(得分:0)