如何正确处理Java中的用户输入?

时间:2011-11-25 22:12:44

标签: java

我正在实现一个扩展javax.swing.JFrame的类X. 我使用以下代码在X中添加了内部类KeyInputHandler:

private class KeyInputHandler extends KeyAdapter {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_LEFT) {


}
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
    ...
}
if (e.getKeyCode() == KeyEvent.VK_UP) {
    ...
}
if (e.getKeyCode() == KeyEvent.VK_SPACE) {
    ...
}
if (e.getKeyCode() == KeyEvent.VK_B) {
    ...
}
}
}

但由于某种原因,它无法识别我的输入。我是否必须在X类中添加其他内容?

1 个答案:

答案 0 :(得分:3)

KeyListeners可能很棘手,而且最重要的是,只有当它们被添加到的组件具有焦点时才有效。否则你就会沉没。此外,您尚未在已发布的代码中显示已将KeyListener添加到任何组件的位置。是的,你有它的类,但实际上你使用该类来创建一个对象并添加到任何东西?

但是,尽管如此,对于您的应用程序类型和问题,您可能最好使用key bindings(查看链接),这是一个更高级别的概念,在焦点问题上更灵活

修改
评论中提出的问题是

  

什么是焦点?

根据Focus Subsytem tutorial,当GUI组件正在接收键盘输入时,它具有焦点。通常以某种方式突出显示。