java中的按键事件

java中的按键事件,java,swing,awt,keylistener,key-bindings,Java,Swing,Awt,Keylistener,Key Bindings,我刚刚创建了一个java tic tac toe游戏,我想知道在特定条件下按下enter键后如何运行一个方法下面是一个示例 if(/*condition is met*/){ //keyListener } 根据您想要捕捉“enter”键的位置,您可以使用ActionListener(在文本组件或按钮等组件上)或将一个 public class MyPanel extends JPanel { public MyPanel() { InputMap im

我刚刚创建了一个java tic tac toe游戏,我想知道在特定条件下按下enter键后如何运行一个方法下面是一个示例

if(/*condition is met*/){
     //keyListener
}

根据您想要捕捉“enter”键的位置,您可以使用
ActionListener
(在文本组件或按钮等组件上)或将一个

public class MyPanel extends JPanel {

    public MyPanel() {

        InputMap im = getInputMap(WHEN_FOCUSED);
        ActionMap am = getActionMap();

        im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "onEnter");

        am.put("onEnter", new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // Enter pressed
            }
        });

    }

}

这将取决于关注的组件。

警告-我已经有一段时间没有开发桌面应用程序了,但是java.awt.component类有一个addKeyListener()方法,您可以使用该方法注册实现KeyListener的类-这就是您要查找的吗?

一种方法是实现接口及其关键事件方法。比如说,

public class MyClass  implements KeyListener {
    public void keyTyped(KeyEvent e) {
        // Invoked when a key has been typed.
    }

    public void keyPressed(KeyEvent e) {
        // Invoked when a key has been pressed.
        if (e.getKeyCode() == KeyEvent.VK_ENTER && yourOtherCondition) {
            myMethod();
        }
    }

    public void keyReleased(KeyEvent e) {
        // Invoked when a key has been released.
    }
}
然后用

myComponent.addKeyListener(new MyClass());
或者如果你愿意

myComponent.addKeyListener(new KeyListener() {
    public void keyPressed(KeyEvent e) { /* ... */ }

    public void keyReleased(KeyEvent e) { /* ... */ }

    public void keyTyped(KeyEvent e) { /* ... */ }
});

有关更多详细信息。

这是什么类型的应用程序-CLI、Swing、Web?但我应该设置什么样的keylistener?您接受的答案使用JPanel。Jpanel是一种组件类型,因此继承addKeyListener()方法。我想问题是,您需要监听哪些关键事件并将其添加到其中。顺便说一句,我并不是说我的答案更好!我在WHEN_FOCUSED和getActionMap()上得到一个错误;方法调用他们都说找不到符号您需要将键绑定应用到Swing组件(从
JComponent
扩展而来)。对你的问题多加一点背景知识会使你更容易接受指导