GWT: Al presionar KEY_ENTER, quiero habilitar el método onclick del botón
button keyboard (2)
Mi objetivo es activar el método onClick (..) de los botones si presiono la tecla Entrar (KEY_ENTER) en el teclado. Para este propósito estoy intentando el siguiente código pero recibo una excepción que dice:
com.google.gwt.event.shared.UmbrellaException: excepción capturada: com.google.gwt.user.client.ui.Button no se puede convertir a com.google.gwt.event.dom.client.ClickHandler
Código:
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);
Puedo entender la excepción pero no puedo encontrar la solución.
¿Qué tal crear una nueva función llamada say doXYZ () y tener la funcionalidad para ser implementada por el botón ClickHandler así como también en KeyPressHandler en esta función y luego invocar este método doXYZ () desde ambos lugares?
Si se trata de un botón GWT solo llame:
button.click();
ver: http://www.gwtproject.org/javadoc/latest/com/google/gwt/user/client/ui/Button.html#click ()
pero si no, y si no necesita hacer nada más en Java, puede llamar al método nativo en JS:
private native void click(Element button)/*-{
button.click(); //or jQuery: $(button).click();
}-*/;
Si necesita usar el código Java, compruebe esto: