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

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条)

报告相同问题?

悬赏问题

  • ¥15 asp.textbox后台赋值前端不能显示什么原因
  • ¥15 宇视监控服务器无法登录
  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥15 DruidDataSource一直closing
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误