3

如果我按键盘上的 Enter 键 (KEY_ENTER),我的目标是激活按钮的 onClick(..) 方法。为此,我正在尝试以下代码,但出现异常:

com.google.gwt.event.shared.UmbrellaException:捕获到异常:com.google.gwt.user.client.ui.Button 无法转换为 com.google.gwt.event.dom.client.ClickHandler

代码:

returnKeyHandler = new KeyDownHandler() {

        @Override
        public void onKeyDown(KeyDownEvent event) {
            if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
                Window.alert("Enter key pressed!!");
                ((ClickHandler) button).onClick(null);
            }
        }
    };

    Button button = new Button();
    button.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {

            Window.alert("blah blah");
            //blah blah..

        }
    });

    TextBox textBox = new TextBox();
    textBox.addKeyDownHandler(returnKeyHandler);

我可以理解异常但无法找到解决方案。

4

2 回答 2

3

如果它是 GWT 按钮,只需调用:

button.click();

请参阅: http: //www.gwtproject.org/javadoc/latest/com/google/gwt/user/client/ui/Button.html#click()

但如果没有,并且如果您不需要在 java 中执行任何其他操作,则可以在 JS 中调用本机方法:

private native void click(Element button)/*-{
    button.click(); //or jQuery: $(button).click();
}-*/;

如果您需要使用 Java 代码,请检查:

在 GWT 中以编程方式调用 click() 函数

于 2013-08-02T12:04:35.160 回答
1

如何创建一个名为 doXYZ() 的新函数,并通过按钮 ClickHandler 以及该函数本身的 KeyPressHandler 实现功能,然后从这两个地方调用这个 doXYZ() 方法?

于 2013-08-02T11:08:56.480 回答