2010-04-18 3 views
3

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

document.get(). AddMouseClick ???

ответ

1

Самый простой способ, который приходит на ум, чтобы обернуть все в 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 с для каждого элемента, который вы не хотите, оповещение для (вы можете используйте тот же самый ClickHandler, чтобы сохранить память - как я сделал выше). Кроме того, реализация FocusPanel должна гарантировать, что поведение onclick остается кросс-браузером.

Смежные вопросы