2010-04-18 5 views
3

J'ai besoin d'enregistrer un événement de clic multiplate-forme et indépendant de la version dans le document. cela signifie que j'ai une boîte à deux textes et le bouton d'envoi, mais quand je clique en dehors des deux zone de texte et le bouton d'envoi puis alerte sera affichée .Comment puis-je par ce achive GWTgwt click document d'événement

document.get(). AddMouseClick ???

Répondre

1

La meilleure façon qui vient à l'esprit est de tout envelopper dans un 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);  

L'inconvénient est que vous devez attribuer ClickHandler s à chaque élément que vous ne voulez pas une alerte pour (vous pouvez utilisez le même ClickHandler pour que cela économise de la mémoire - comme je l'ai fait ci-dessus). Autre que cela, l'implémentation FocusPanel doit garantir que le comportement onclick reste cross-browser.

Questions connexes