java - addKeyListener 未按预期工作

标签 java swing events instance keylistener

我使用按键事件而不是按键绑定(bind),因为我还不了解按键绑定(bind)。

我用一个带有 Jbutton 的 JPanel 制作了一个 JFrame

我将 JPanel 实例化为框架类中的面板,并将 JButton 实例化为面板类中的按钮。我继续编辑面板的类。

如果我 addKeyListener 带有一个新的 keyAdapter ,它只打印“按键按下”,那么如果我输入任何内容,什么也不会发生。但是,如果我使用相同的通用 keyAdapter 执行 button.addKeyListener ,则当我按下某个键时,将打印“key Pressed”。

我认为这与实例有关。所以我的第一个问题是:如何让组件向自身添加关键监听器和/或为什么不调用 addKeyListener 甚至 this.addKeyListener 执行此操作?

当我添加一个关键监听器时,代码会继续运行(可能应该如此),因此我尝试执行 while(some boolean) thread.sleep(1000) 只是让关键监听器在以下情况下更改 boolean 值按下一个键。我只是想让我的代码等待,直到按下一个键。我知道这没什么可继续的,但我的问题是:是否有更好或更干净的方法来暂停方法/等待输入?

最佳答案

If I addKeyListener with a new keyAdapter that just prints "key pressed", nothing happens if I type anything.

可能是因为组件没有焦点。 KeyEvent 只分派(dispatch)给具有焦点的组件。对于按键绑定(bind)来说这不是问题,因为即使组件没有焦点,它们也可以处理事件。

关于java - addKeyListener 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8281374/

相关文章:

java - 单击后重命名按钮 - Java JButton

java JFrame setContentPanel 然后 JPanel 消失

Javascript - 触发特定的键盘键

java - 在外部库中启用日志记录

java - Spring 启动: Consider defining a bean named 'entityManagerFactory' in your configuration

java - 如何修复这个sql异常

java - 致命异常 : main

Java:将 JScrollPane 添加到 JTextArea

javascript - 根据用户点击的位置获取鼠标位置

javascript - 使用 jQuery 触发 oninput 事件