CavalryOuO 2017-05-20 13:09 采纳率: 62.5%
浏览 1701
已采纳

java键盘监听无法触发

程序只有一个JFrame,应该不是焦点问题。

import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;

public class GameInterface extends JFrame implements KeyListener{
Tank tank=new Tank();
Bullet bullet=new Bullet();
TankController tc=new TankController();
public GameInterface() {
this.addKeyListener(this);
this.setFocusable(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);

setBounds(0,0,1500,1000);
setVisible(true);

}

public void paint(Graphics g){
while(true){
tank.clearTank(g);
tank.clearMyTank(g);
tc.tankDirection();
tank.draw(g);

tank.drawMyTank(g);
bullet.draw(g);
}

}

public static void main(String[] args){
new GameInterface().repaint();
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println("r");

switch(e.getKeyCode()){
case KeyEvent.VK_RIGHT:
Tank.myTank.Dirction=Tank.RIGHT;
Tank.myTank.x+=20;
break;
case KeyEvent.VK_LEFT:
Tank.myTank.Dirction=Tank.LEFT;
Tank.myTank.x-=20;
break;
case KeyEvent.VK_UP:
Tank.myTank.Dirction=Tank.UP;
Tank.myTank.y-=20;
break;
case KeyEvent.VK_DOWN:
Tank.myTank.Dirction=Tank.DOWN;
Tank.myTank.y+=20;
break;}

}

@Override
public void keyReleased(KeyEvent e) {

}

@Override
public void keyTyped(KeyEvent e) {

}

}

  • 写回答

3条回答 默认 最新

  • 鼠晓 博客专家认证 2017-05-21 15:47
    关注

    我试了下你这个是可以接到键盘指令的,,不过你有几个类没有给发,,这个应该不影响,,

    这个你测试的时候,要把窗口打开然后按上下左右键,要不然键盘作用的对象就不是你的窗口,,不知道说明白没,,有问题还可以继续交流

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能