GWT Polymer UiBinder Vaadin Elements addEventListener事件按键按下事件
我试图遵循基本的hello world示例,使用GWT聚合物和UiBinder元素。 基本GWT示例存根生成的代码处理指定输入的键。 我认为有一个事件处理程序并检查按下的键是很容易的 我可能做错了一些基本的事情。 可能是一些我没有做的导入,或者是聚合物 该事件确实会触发,但当我尝试从该事件获取密钥时,该事件未定义。 我猜使用“按键”就像其他例子使用“点击”一样,它确实会触发,但正确的类型是什么? 我输出了一些值,得到如下结果: event.getDetail().getKey()->未定义 event.toString()->[对象键盘事件] nameFieldInput.getValue()-> nameFieldInput.getInnerHTML()->显示在处理当前键之前键入的内容 我还需要知道用于键进行测试的字符串值或常量。 请建议如何使用事件侦听器进行此操作 这是我目前的代码: Main.ui.xml文件 那么这个呢: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
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();
}
}
});