Tag: keyevent

Java KeyListener keyPressed方法触发太快

如果你使用java KeyListener类,你知道如果按住一个键keyPressed将触发一个KeyEvent ,然后大约半秒后将非常快地多次触发相同的键。 我想知道是否有办法防止KeyEvents射击太快。 我希望它们以大约每500毫秒一次的恒定速率运行。

KeyTypedEvent KeyEvent的KeyCode始终为0?

我在NetBeans IDE中有一个Java Swing应用程序。 我制作了一个表单并将KeyListener附加到我的各种控件中: jButton1.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(java.awt.event.KeyEvent evt) { keyTypedEvent(evt); } }); 和keyTypedEvent定义如下: private void keyTypedEvent(java.awt.event.KeyEvent evt) { System.out.println(evt); appendDisplay(String.valueOf(evt.getKeyChar())); } 我在evt添加了一个println ,看看会发生什么,并validation我的keylistener是否正常工作。 当我构建并运行我的应用程序时,我意识到输出似乎总是有一个keycode = 0 为了validation这一点,我将println更改为evt.getKeyCode()并且它始终返回0。 我可能完全误解了KeyCode的function,但我认为它可以与Oracle文档中的值进行协调: http://docs.oracle.com/javase/7/docs/api/constant-values.html#java.awt.event.KeyEvent.VK_ESCAPE 例如,VK_ESCAPE的值为27。

以编程方式触发JTextField中的键事件?

如何以编程方式触发正在侦听ENTER上的事件的JTextField上的按键事件? 我的JTextField上的键事件的监听器声明如下: myTextField.addKeyListener(new KeyAdapter() { @Override public void keyTyped(KeyEvent e) { if (e.getKeyChar() == KeyEvent.VK_ENTER) { // Do stuff } } }); 谢谢。

如何完美模拟KeyEvents?

我怎样才能构建自己的KeyEvent对象,当最终用户键入内容时,它完全(或非常接近)匹配我从KeyListener收到的对象? 例如,我有一个英国的ISO键盘布局,并键入”我按Shift+2字符。如果我使用KeyListener在JFrame上记录这个,我收到以下事件: java.awt.event.KeyEvent[KEY_PRESSED,keyCode=16,keyText=Shift,keyChar=Undefined keyChar,modifiers=Shift,extModifiers=Shift,keyLocation=KEY_LOCATION_LEFT,rawCode=16,primaryLevelUnicode=0,scancode=42,extendedKeyCode=0x10] on frame0 java.awt.event.KeyEvent[KEY_PRESSED,keyCode=50,keyText=2,keyChar='”‘,modifiers=Shift,extModifiers=Shift,keyLocation=KEY_LOCATION_STANDARD,rawCode=50,primaryLevelUnicode=50,scancode=3,extendedKeyCode=0x32] on frame0 java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='”‘,modifiers=Shift,extModifiers=Shift,keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0,primaryLevelUnicode=0,scancode=0,extendedKeyCode=0x0] on frame0 java.awt.event.KeyEvent[KEY_RELEASED,keyCode=16,keyText=Shift,keyChar=Undefined keyChar,keyLocation=KEY_LOCATION_LEFT,rawCode=16,primaryLevelUnicode=0,scancode=42,extendedKeyCode=0x10] on frame0 java.awt.event.KeyEvent[KEY_RELEASED,keyCode=50,keyText=2,keyChar='”‘,keyLocation=KEY_LOCATION_STANDARD,rawCode=50,primaryLevelUnicode=50,scancode=3,extendedKeyCode=0x32] on frame0 我想创建一个方法,我将”作为一个char参数,它将返回上面列出的KeyEvents数组。 我的问题是: 在KEY_PRESSED和KEY_RELEASED事件中, keyChar='”‘表示按下的字符( ” ),但keyCode=50表示“未移位”的ASCII值(也称为2 )。 我需要知道如何从”角色”获取这个非移位值。 对于不同的键盘布局,此非移位值也将不同。 例如,美国ANSI布局要求Shift+’键入”键”,这意味着keyCode将是39而不是50。 在某些键盘布局上,Shift键需要键入键,而不是其他键。 例如, #字符在美国ANSI键盘上需要Shift+3 ,但在UK ISO键盘上不需要Shift+3键。 我需要知道是否应该模拟移位按下/释放事件并提供移位修改器。 任何有关如何解决这些问题的见解将不胜感激。 我还应该注意,在我的情况下不能使用Robot类。