java键盘监听无法触发

CavalryOuO 2017-05-20 12:04:25
程序只有一个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) {

}

}
...全文
493 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
CavalryOuO 2017-05-22
  • 打赏
  • 举报
回复
引用 3 楼 qq_34228570 的回复:
[quote=引用 2 楼 zc881124 的回复:] 试了下,能监听键盘,把问题描述清楚了。
我把重写的paint()方法里面的while循环移到外面的repaint()前面就可以监听, 这是为什么?[/quote] 我试了在paint()里面只有循环什么都不做,也不能监听。
CavalryOuO 2017-05-22
  • 打赏
  • 举报
回复
引用 1 楼 happy_byr 的回复:
并没看出什么毛病
我把重写的paint()方法里面的while循环移到外面的repaint()前面就可以监听, 这是为什么?
CavalryOuO 2017-05-22
  • 打赏
  • 举报
回复
引用 2 楼 zc881124 的回复:
试了下,能监听键盘,把问题描述清楚了。
我把重写的paint()方法里面的while循环移到外面的repaint()前面就可以监听, 这是为什么?
110成成 2017-05-21
  • 打赏
  • 举报
回复
试了下,能监听键盘,把问题描述清楚了。
happy_byr 2017-05-21
  • 打赏
  • 举报
回复
并没看出什么毛病

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧