java中的KeyPressed事件

Cod*_*ver 5 java swing awt keylistener key-bindings

我刚刚创建了一个java tic-tac-toe游戏我想弄清楚如何在某个条件下按下回车键时运行一个方法,例如下面...

if(/*condition is met*/){
     //keyListener
}
Run Code Online (Sandbox Code Playgroud)

Mad*_*mer 7

根据您想要捕获"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
            }
        });

    }

}
Run Code Online (Sandbox Code Playgroud)

这将依赖于所关注的组件.


Jak*_*ler 6

一种方法是实现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.
    }
}
Run Code Online (Sandbox Code Playgroud)

然后添加这个监听器

myComponent.addKeyListener(new MyClass());
Run Code Online (Sandbox Code Playgroud)

或者如果你愿意的话,

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

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

    public void keyTyped(KeyEvent e) { /* ... */ }
});
Run Code Online (Sandbox Code Playgroud)

请参阅此了解更多详细信息。