我使用按键事件而不是按键绑定(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/