Я новичок в ваадине. У меня есть одна ссылка как
Ссылка ссылка = новая ссылка ("", новый ExternalResource (redirectURL));
Мое требование: я должен установить значение, когда пользователь щелкает ссылку. Могу ли я добавить слушателя, когда пользователь щелкает ссылку. Или есть альтернативные способы установки значения при нажатии ссылки.
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)) {}
}
});
Я истолковал ваш вопрос как изменение заголовка ссылки. Насколько я знаю, это невозможно с компонентом 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");
}
});
Вы можете использовать новый класс 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");
}
});
Дополнительную информацию см. здесь.
Я еще не работал над Ваадином. Но я заглянул в документ. Я обнаружил, что класс Link
внутренне расширяет класс AbstractComponent
, который имеет множество функций, которые вы можете переопределить. как будто у него есть функция addListener
, в которой вам нужно передать прослушиватель Component
в качестве параметра, и он может обнаруживать событие клика и делать все, что вы хотите.
Для справки проверьте это
И это тоже
Надеюсь, это поможет :)
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.