gwt click документ события - PullRequest
       18

gwt click документ события

3 голосов
/ 18 апреля 2010

Мне нужно зарегистрировать кроссплатформенное и независимое от версии событие клика в документе. это означает, что у меня есть два текстовых поля и кнопка отправки, но когда я нажимаю за пределами двух текстового поля и кнопку отправки будет отображаться предупреждение. Как я могу добиться этого от gwt

document.get (). AddMouseClick ???

1 Ответ

1 голос
/ 18 апреля 2010

Самый простой способ, который приходит на ум, - это обернуть все в FocusPanel:

ClickHandler clickHandler = new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            Window.alert("TextBox/Button clickHandler.");
            event.stopPropagation(); // The important line - We stop the event
                                     // propagation here so that the FocusPanel
                                     //  doesn't get the event
        }
    };
TextBox textBox = new TextBox();
textBox.addClickHandler(clickHandler);
Button button = new Button("Test");
button.addClickHandler(clickHandler);


// Since FocusPanel is a SimplePanel, it can only have one child, so we are
// wrapping everything additionally in a HorizontalPanel
HorizontalPanel hPanel = new HorizontalPanel();
hPanel.add(textBox);
hPanel.add(button);


FocusPanel focusPanel = new FocusPanel(hPanel);
focusPanel.addClickHandler(new ClickHandler() {
    @Override
    public void onClick(ClickEvent event) {
        Window.alert("Outside."); // Clicked outside of the TextBox/Button
    }
});

RootPanel.get().add(focusPanel);    

Недостатком является то, что вам нужно назначить ClickHandler s для каждого элемента, для которого вы не хотите получать оповещения (вы можете использовать тот же ClickHandler для этого, чтобы сохранить память - как я делал выше). Кроме этого, реализация FocusPanel должна гарантировать, что поведение при нажатии остается кросс-браузерным.

...