1

我是 vaadin 的新手。我有一个像这样的链接

链接链接 = new Link("", new ExternalResource(redirectURL));

我的要求是,当用户单击链接时,我必须设置值。当用户单击链接时,我可以添加侦听器吗?或者如果单击链接,是否有其他设置值的方法。

4

4 回答 4

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)) {}
    }
});
于 2014-04-02T16:11:47.193 回答
3

我将您的问题解释为更改链接的标题。据我所知,链接组件不可能。看看 activelink 插件:http: //vaadin.com/addon/activelink

此插件的行为类似于 Link 并允许您向LinkActivatedListener其中添加一个。代码应如下所示:

final ActiveLink link = new ActiveLink("", new ExternalResource(redirectURL));
link.addListener(new LinkActivatedListener() {

    @Override
    public void linkActivated(LinkActivatedEvent event) {
        link.setCaption("newCaption");
    }

});
于 2014-03-27T08:27:51.030 回答
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");
    }
});

更多信息在这里

于 2014-03-27T14:01:47.870 回答
0

我还在 Vaadin 上工作,但我查看了文档。我发现Link该类在内部扩展AbstractComponent了具有许多您可以覆盖的功能的类。就像它具有addListener您需要将Component侦听器作为参数传递的功能,并且可以检测单击事件并执行您想做的任何事情。

供参考检查这个

也是

希望这会有所帮助:)

于 2014-03-27T06:54:22.940 回答