GWT Polymer UiBinder Vaadin Elements addEventListener事件按键按下事件

GWT Polymer UiBinder Vaadin Elements addEventListener事件按键按下事件,gwt,polymer,vaadin,uibinder,paper-elements,Gwt,Polymer,Vaadin,Uibinder,Paper Elements,我试图遵循基本的hello world示例,使用GWT聚合物和UiBinder元素。 基本GWT示例存根生成的代码处理指定输入的键。 我认为有一个事件处理程序并检查按下的键是很容易的 我可能做错了一些基本的事情。 可能是一些我没有做的导入,或者是聚合物 该事件确实会触发,但当我尝试从该事件获取密钥时,该事件未定义。 我猜使用“按键”就像其他例子使用“点击”一样,它确实会触发,但正确的类型是什么? 我输出了一些值,得到如下结果: event.getDetail().getKey()->未定义 ev

我试图遵循基本的hello world示例,使用GWT聚合物和UiBinder元素。 基本GWT示例存根生成的代码处理指定输入的键。 我认为有一个事件处理程序并检查按下的键是很容易的

我可能做错了一些基本的事情。 可能是一些我没有做的导入,或者是聚合物

该事件确实会触发,但当我尝试从该事件获取密钥时,该事件未定义。 我猜使用“按键”就像其他例子使用“点击”一样,它确实会触发,但正确的类型是什么? 我输出了一些值,得到如下结果:

event.getDetail().getKey()->未定义

event.toString()->[对象键盘事件]

nameFieldInput.getValue()-> nameFieldInput.getInnerHTML()->显示在处理当前键之前键入的内容

我还需要知道用于键进行测试的字符串值或常量。 请建议如何使用事件侦听器进行此操作

这是我目前的代码:

Main.ui.xml文件

那么这个呢:

nameFieldInput.getPolymerElement().addEventListener("keyup", new EventListener() {
    @Override
    public void handleEvent(Event e) {
        NativeEvent ne = (NativeEvent)e;
        if (ne.getKeyCode() == KeyCodes.KEY_ENTER && !ne.getCtrlKey()) {
            sendMsgDialog.close();
            sendNameToServer();
        }
    }           
});

在@Euclides answer的帮助下,我能够修复代码并使其正常工作

这是正在工作的更正版本

Main.java类

sendButton.addEventListener("click", new EventListener() {
  public void handleEvent(Event event) {
    sendMsgDialog.open();
    nameFieldInput.setAutofocus(true);
  }
});

...

nameFieldInput.addEventListener("keyup",  new EventListener<KeysPressedEvent>() {
  public void handleEvent(KeysPressedEvent event) {
    NativeEvent nativeEvent = (NativeEvent)event;
    // CharCode is blank unless you use "keypress" as the event
    // nameFieldInput.setErrorMessage(nativeEvent.getCharCode()+":"+nativeEvent.getKeyCode()+":"+nativeEvent.getAltKey()+":"+nativeEvent.getCtrlKey()+":"+nativeEvent.getMetaKey()+":"+nativeEvent.getShiftKey());
    if (nativeEvent.getKeyCode() == KeyCodes.KEY_ENTER 
        && !nativeEvent.getAltKey() && !nativeEvent.getCtrlKey() 
        && !nativeEvent.getMetaKey() && !nativeEvent.getShiftKey()) {
        sendMsgDialog.close();
        sendNameToServer();
    }
  }
});
sendButton.addEventListener(“单击”,新建EventListener()){
公共无效handleEvent(事件){
sendMsgDialog.open();
nameFieldInput.setAutofocus(真);
}
});
...
nameFieldInput.addEventListener(“keyup”,new EventListener()){
公共无效handleEvent(按键按下事件){
NativeEvent NativeEvent=(NativeEvent)事件;
//除非使用“按键”作为事件,否则CharCode为空
//nameFieldInput.setErrorMessage(nativeEvent.getCharCode()+”:“+nativeEvent.getKeyCode()+”:“+nativeEvent.getAltKey()+”:“+nativeEvent.getCtrlKey()+”:“+nativeEvent.getMetaKey()+”:“+nativeEvent.getShiftKey());
如果(nativeEvent.getKeyCode()==KeyCodes.KEY\u输入
&&!nativeEvent.getAltKey()&&!nativeEvent.getCtrlKey()
&&!nativeEvent.getMetaKey()&&!nativeEvent.getShiftKey()){
sendMsgDialog.close();
sendNameToServer();
}
}
});

谢谢@Euclides-正是我需要的帮助。必须删除GetPolymRelation(),因为这是无效的,但随后它就起作用了。我试过上键、下键和按键。按键为v.s shift-a(a)提供不同的按键代码。我选择了你的钥匙。
...

@UiField PaperFabElement addButton;

...

public Main() {
  initWidget(ourUiBinder.createAndBindUi(this));
  addButton.addEventListener("click", new EventListener() {
    @Override
    public void handleEvent(Event event) {
        addItemDialog.open();
    }
  });
}
...

@UiField PaperTabsElement paperTabs;

...

paperTabs.addEventListener(IronSelectEvent.NAME, new EventListener<IronSelectEvent>() {
  public void handleEvent(IronSelectEvent event) {
    PaperTabElement tab = (PaperTabElement)event.getDetail().getItem();
    toast.close();
    toast.setText("Tab \"" + tab.getTextContent() + "\" has been selected");
    toast.open();
  }
});
<g:HorizontalPanel ui:field="hPanel">
      <g:Button ui:field="sendButton" text="Send"
       styleName="{style.sendButton}" />
      <g:TextBox ui:field="nameField" text="GWT User" />
    </g:HorizontalPanel>
  @UiField
  HorizontalPanel hPanel;
  @UiField
  Button sendButton;
  @UiField
  TextBox nameField;

  //Fired when user clicks send Button
  @UiHandler("sendButton")
  public void sendOnClick(ClickEvent event){
    sendNameToServer();
  }

  //Fired when user types in the nameField.
  @UiHandler("nameField")
  public void nameOnKeyUp(KeyUpEvent event){
    if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER){
      sendNameToServer();
    }
  }
nameFieldInput.getPolymerElement().addEventListener("keyup", new EventListener() {
    @Override
    public void handleEvent(Event e) {
        NativeEvent ne = (NativeEvent)e;
        if (ne.getKeyCode() == KeyCodes.KEY_ENTER && !ne.getCtrlKey()) {
            sendMsgDialog.close();
            sendNameToServer();
        }
    }           
});
sendButton.addEventListener("click", new EventListener() {
  public void handleEvent(Event event) {
    sendMsgDialog.open();
    nameFieldInput.setAutofocus(true);
  }
});

...

nameFieldInput.addEventListener("keyup",  new EventListener<KeysPressedEvent>() {
  public void handleEvent(KeysPressedEvent event) {
    NativeEvent nativeEvent = (NativeEvent)event;
    // CharCode is blank unless you use "keypress" as the event
    // nameFieldInput.setErrorMessage(nativeEvent.getCharCode()+":"+nativeEvent.getKeyCode()+":"+nativeEvent.getAltKey()+":"+nativeEvent.getCtrlKey()+":"+nativeEvent.getMetaKey()+":"+nativeEvent.getShiftKey());
    if (nativeEvent.getKeyCode() == KeyCodes.KEY_ENTER 
        && !nativeEvent.getAltKey() && !nativeEvent.getCtrlKey() 
        && !nativeEvent.getMetaKey() && !nativeEvent.getShiftKey()) {
        sendMsgDialog.close();
        sendNameToServer();
    }
  }
});