【发布时间】:2016-06-06 12:42:53
【问题描述】:
我正在创建一个需要按键输入的低级游戏。所以,像往常一样,我导入了KeyListener 和KeyEvent 库。我创建了三个必需的方法:keyPressed、keyReleased、keyTyped。然后我在类“testJPanel”中添加了一个keyListener,并且在keyPressed 方法中,我创建了一个switch 来检查某个按钮是否被按下。至于keyReleased 和keyTyped 方法,我选择将它们留空。对我来说,一切似乎都很好,但Java 似乎不想注册我的键盘输入:当我按下向上箭头键时,程序应该打印“测试”,但遗憾的是,它没有。为什么?任何和所有的帮助将不胜感激。
testJFrame.java
import java.awt.Color;
import javax.swing.JFrame;
public class testJFrame extends JFrame {
public testJFrame() {
setTitle("A test application");
setSize(500, 500);
setBackground(Color.black);
setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setFocusable(true);
add(new testJPanel());
}
public static void main(String[] args) {
testJFrame testJFrame = new testJFrame();
}
}
testJPanel.java
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;
import javax.swing.Timer;
public class testJPanel extends JPanel implements KeyListener, ActionListener {
public testJPanel() {
Timer timer = new Timer(15, this);
timer.start();
addKeyListener(this);
}
public void update() {
}
@Override
public void actionPerformed(ActionEvent a) {
update();
}
@Override
public void keyPressed(KeyEvent k) {
switch(k.getKeyCode()) {
case KeyEvent.VK_UP:
System.out.println("Test");
}
}
@Override
public void keyReleased(KeyEvent k) {
}
@Override
public void keyTyped(KeyEvent k) {
}
}
【问题讨论】:
标签: java input jframe jpanel keylistener