Я не думаю, что есть простой способ сделать это. Вот умный класс всплывающих окон, который мы используем:
public class SmartPopup extends PopupPanel {
public void show(int left, int top) {
setPopupPositionAndShow(new PositionCallback() {
@Override
public void setPosition(int offsetWidth, int offsetHeight) {
int popupLeft = left;
if ((offsetWidth + left > Window.getClientWidth())
&& (left - offsetWidth > 0)) {
popupLeft = left - offsetWidth;
}
int popupTop = top;
if ((top + offsetHeight > Window.getClientHeight())
&& (top - offsetHeight > 0)) {
popupTop = top - offsetHeight;
}
setPopupPosition(popupLeft, popupTop);
}
});
}
}
Если у вас есть такой класс, вы можете расширить его, добавив стили всплывающих подсказок, автоматически добавить метку и т. Д. *
public class ToolTip extends SmartPopup {
public ToolTip(String message) {
addStyleName("tool-tip-css");
add(new Label(message));
}
}
И тогда ваш код будет довольно простым:
yourButtonOrWhatever.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
ToolTip toolTip = new ToolTip("Hey, this is like a tool-tip for clicking!");
toolTip.show(event.getClientX(), event.getClientY());
}
});
Мне так нравится писать классы, что я бы даже сделал специальный подкласс ClickHandler
, поэтому мне не приходилось набирать эти строки снова и снова ...
yourButtonOrWhatever.addClickHandler(new ToolTipHandler("Hey, this is like a tool-tip for clicking!"));