Я новичок в ваадине. У меня есть одна ссылка как

Ссылка ссылка = новая ссылка ("", новый ExternalResource (redirectURL));

Мое требование: я должен установить значение, когда пользователь щелкает ссылку. Могу ли я добавить слушателя, когда пользователь щелкает ссылку. Или есть альтернативные способы установки значения при нажатии ссылки.

1
Pranoti 27 Мар 2014 в 10:19
Какое значение вы должны установить?
 – 
rpozarickij
27 Мар 2014 в 12:19

4 ответа

Лучший ответ

Чтобы захватить 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)) {}
    }
});
7
Abbas 2 Апр 2014 в 20:11
К сожалению для меня нет :-(. Добавление прослушивателя в макет приводит к сбою ссылки.
 – 
agad
20 Окт 2015 в 15:33

Я истолковал ваш вопрос как изменение заголовка ссылки. Насколько я знаю, это невозможно с компонентом Link. Взгляните на надстройку 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");
    }

});
3
acsadam0404 27 Мар 2014 в 12:27

Вы можете использовать новый класс 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");
    }
});

Дополнительную информацию см. здесь.

1
nexus 27 Мар 2014 в 18:01

Я еще не работал над Ваадином. Но я заглянул в документ. Я обнаружил, что класс Link внутренне расширяет класс AbstractComponent, который имеет множество функций, которые вы можете переопределить. как будто у него есть функция addListener, в которой вам нужно передать прослушиватель Component в качестве параметра, и он может обнаруживать событие клика и делать все, что вы хотите.

Для справки проверьте это

И это тоже

Надеюсь, это поможет :)

0
TheLittleNaruto 15 Дек 2014 в 10:12