【问题标题】:KeyBindingApi. Enter doesnt know键绑定 API。输入不知道
【发布时间】:2018-05-14 21:11:46
【问题描述】:

当在按钮上按 Enter 时,我尝试执行操作。

        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 知道使用 String ENTER 的击键,但如果我在这里接受它,它就不起作用。 ESCAPE 工作完美,但 ENTER 没有工作。如果我将其转换为 char 并制作

        im.put(KeyStroke.getKeyStroke((char) KeyEvent.VK_ENTER),"enter");
        im.put(KeyStroke.getKeyStroke("released ENTER"),"enter released");

然后就可以了。但我觉得这很难看,我不想投这个,因为我认为通常“Enter”应该可以工作。

【问题讨论】:

标签: java enter


【解决方案1】:

问题是,这是大量记录,KeyListener 不可靠。

为了使KeyListener 工作,它注册到的组件必须是可聚焦的并且具有键盘焦点。

添加JButton 之类的组件会将键盘焦点从您的组件上移开,然后将其交给其他组件,因此KeyListener 停止工作。

有许多“变通办法”,但坦率地说,它们并不可靠,基本上只是黑客行为。

您最好使用Key Bindings API,它解决了KeyListener 的缺点并提供了更可重用和更灵活的API

【讨论】:

  • mhhh 我试过了。请参阅下面的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-28
  • 2018-03-24
  • 1970-01-01
  • 2014-09-18
  • 2021-07-29
  • 2022-11-30
相关资源
最近更新 更多