我有public class MainFrame extends JFrame implements ActionListener {
然后再:
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == e.VK_LEFT) {
int x = ball.getX() + 1;
ball.setX(x);
}
}
但是我认为应该没有反应。
如果我添加keylistener而不是actionlister,我将无法编译我无法理解的代码。我是Java的新手,但是我已经习惯了C#
最佳答案
您需要实现java.awt.event.KeyListener
而不是ActionListener
来监听关键事件。
您需要通过调用addKeyListener(...)
在要侦听的元素(框架)上注册侦听器。
例:
public class TestFrame extends JFrame implements KeyListener {
public static void main(String[] args) throws FileNotFoundException {
TestFrame testFrame = new TestFrame();
testFrame.setSize(100, 100);
testFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
testFrame.addKeyListener(testFrame);
testFrame.setVisible(true);
}
@Override
public void keyTyped(KeyEvent e) { }
@Override
public void keyPressed(KeyEvent e) {
System.out.println(e);
}
@Override
public void keyReleased(KeyEvent e) { }
}