WebEngine完成页面加载后,将“ keydown”侦听器添加到文本输入元素。我如何才能从侦听器中检索到按下了哪个键?
webEngine.getLoadWorker().stateProperty()
.addListener((ObservableValue<? extends State> ov, State oldState,
State newState) -> {
if (newState == State.SUCCEEDED) {
Document doc = webEngine.getDocument();
Element ele = doc.getElementById("someInputField");
((EventTarget) ele).addEventListener("keydown", (event) -> {
//if triggering key is 'ENTER'
doSomeMethod();
}, false);
}
});
该事件为com.sun.webkit.dom.KeyboardEventImpl
,因此您可以使用getKeyCode()
或获取密钥getCharCode()
。不要忘了像shift,ctrl ...这样的元键(getAltKey(),getCtrlKey(),getShiftKey(),getMetaKey())。
获得类型的最快方法是反射。但是有时调试器不想告诉您类型。然后,您可以使用一个古老的把戏println
。
((EventTarget) ele).addEventListener("keydown", (event) -> {
//if triggering key is 'ENTER'
System.out.println(event.toString());
if ("Enter".contentEquals(((com.sun.webkit.dom.KeyboardEventImpl) event).getKeyIdentifier())) {
System.out.println("keydown on Enter");
}
}, false);
解决java lambdas调试问题的另一种方法是不使用它们。
((EventTarget) ele).addEventListener("keydown", new EventListener() {
@Override
public void handleEvent(Event evt) {
System.out.println(String.valueOf(((com.sun.webkit.dom.KeyboardEventImpl) evt).getKeyCode()));
com.sun.webkit.dom.KeyboardEventImpl event = (com.sun.webkit.dom.KeyboardEventImpl) evt;
System.out.println(event.getKeyIdentifier());
}
}, false);
我想我老了...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句