我在通过键绑定使用键事件,因为我还不了解键绑定。

我用一个带有Jbutton的JFrame来创建一个JPanel

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

如果我用新的addKeyListener keyAdapter仅打印“键按下”,则输入任何内容都不会发生。但是,如果我使用相同的通用button.addKeyListener进行keyAdapter,则当我按一个键时,将显示“键被按下”。

我认为这与实例有关。因此,我的第一个问题是:如何让组件为其自身添加键侦听器,和/或为什么不调用addKeyListener甚至this.addKeyListener这样做呢?

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

最佳答案

如果我使用仅显示“按键按下”的新keyAdapter的addKeyListener,则键入任何内容均不会发生任何事情。


可能是因为该部分没有焦点。 KeyEvent仅分派给具有焦点的组件。这对于键绑定而言不是问题,因为即使组件没有焦点,它们也可以处理事件。

10-06 07:15