Java KeyBindingApi。我不知道
当按下按钮上的Enter键时,我试图执行一个操作Java KeyBindingApi。我不知道,java,enter,Java,Enter,当按下按钮上的Enter键时,我试图执行一个操作 System.out.println(KeyStroke.getKeyStroke("ENTER").getKeyCode()); im.put(KeyStroke.getKeyStroke("ESCAPE"),"esc"); im.put(KeyStroke.getKeyStroke("released ESCAPE"),"esc released"); im.put(KeySt
System.out.println(KeyStroke.getKeyStroke("ENTER").getKeyCode());
im.put(KeyStroke.getKeyStroke("ESCAPE"),"esc");
im.put(KeyStroke.getKeyStroke("released ESCAPE"),"esc released");
im.put(KeyStroke.getKeyStroke("ENTER"),"enter");
im.put(KeyStroke.getKeyStroke("released ENTER"),"enter released");
我不知道为什么,但是
sysout得到了10,所以inputmap知道使用字符串ENTER的击键,但是如果我在这里使用lieke,它就不起作用了。逃跑很有效,但进入不起作用。如果我把这个丢给char做
im.put(KeyStroke.getKeyStroke((char) KeyEvent.VK_ENTER),"enter");
im.put(KeyStroke.getKeyStroke("released ENTER"),"enter released");
然后它就起作用了。但是我觉得这很难看,我不想投下这个,因为我认为通常“回车”应该能起作用。问题是,这是大量的文档记录,
keylister
是不可靠的
为了使KeyListener
工作,它注册到的组件必须是可聚焦的,并且具有键盘焦点
添加诸如JButton
之类的组件会将键盘焦点从您的组件移开,并将其交给其他组件,因此keylister
停止工作
有很多“变通方法”,但坦率地说,它们是不可靠的,本质上只是黑客
您最好使用,它解决了
KeyListener
的缺点,并提供了一个更可重用、更灵活的API请阅读我尝试的mhhh。见下面我的答案