我对javafx 2.0中的KeyEvent处理有以下问题。这个代码在start方法中:
scene.addEventHandler(KeyEvent.ANY, e -> System.out.format(
"Type: {%s},\tCode: {%s},\tchar: {%s}%n",
e.getEventType(), e.getCode(), e.getCharacter());
);
产生
Type: {KEY_PRESSED}, Code: {A}, char: {
Type: {KEY_TYPED}, Code: {UNDEFINED}, char: {a}
Type: {KEY_RELEASED}, Code: {A}, char: {
(与其他键和方法e.setOnKey{Pressed, Released, Typed}()
相同)
看起来e.getCharacter()
会返回'\0'
。问题出在哪儿?在我的应用程序中,我需要立即获取代码和键入的键的值。有趣的是,几天前KeyEvent.KEY_PRESSED
的构造效果非常好。
USECASE: 我是从条形码扫描仪扫描键盘输入,它使用enter结束每个代码(我必须与其他字符区分开来)。
答案 0 :(得分:1)
getCharacter
方法仅返回KEY_TYPED
个事件的有意义数据,see javadoc (emphasis mine):
字符变量始终包含有效的Unicode字符或
CHAR_UNDEFINED
。键输入事件报告字符输入;按下 键和键释放事件不一定与字符输入 相关联。因此,保证字符变量仅对键入的事件有意义。
CHAR_UNDEFINED
包含"\u0000"
,这就是您获得此结果的原因。