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 に答える