gwt点击事件文档

问题描述:

我需要向文档注册跨平台和版本独立的点击事件。
这意味着我有一个两个文本框和提交按钮,但当我点击两个文本框之外并提交按钮,然后
警告将显示。我可以通过gwt

i need to register a cross platform and version independent click event to the document. that means i have a two text box and submit button but when i click outside of the two text box and submit button then alert will be displayed .how can i achive this by gwt

document.get()。addMouseClick ???

document.get().addMouseClick ???

要将所有内容封装在 FocusPanel

The easiest way that comes to mind is to wrap everything in a 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行为保持跨浏览器。

The downside is that you need to assign ClickHandlers to every element you don't want an alert for (you can use the same ClickHandler for that to save memory - like I did above). Other than that, the FocusPanel implementation should ensure that the onclick behavior stays cross-browser.