java中的按键事件
我刚刚创建了一个java tic tac toe游戏,我想知道在特定条件下按下enter键后如何运行一个方法下面是一个示例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
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
扩展而来)。对你的问题多加一点背景知识会使你更容易接受指导