KeyListener事件显然没有在java applet中触发
发布时间:2020-12-14 05:50:38 所属栏目:Java 来源:网络整理
导读:我刚刚开始学习编程applet和 java GUI,我试图制作一个简单的游戏.目前,我有主要类(游戏)和玩家类(玩家)我让玩家画到屏幕上,但我很难让关键事件发挥作用,任何帮助赞赏! 玩家图像显示完全正常,但当我完全按下按键时位置不会改变. 编辑:为播放器发布错误代码,
我刚刚开始学习编程applet和
java GUI,我试图制作一个简单的游戏.目前,我有主要类(游戏)和玩家类(玩家)我让玩家画到屏幕上,但我很难让关键事件发挥作用,任何帮助赞赏!
玩家图像显示完全正常,但当我完全按下按键时位置不会改变. 编辑:为播放器发布错误代码,更新 Game.java: public class Game extends Applet { Player player; @Override public void init() { player = new Player(this); this.setSize(800,600); addKeyListener(player); } @Override public void paint(Graphics g) { player.paint(g); } } Player.java: public class Player implements KeyListener { Game game; Image image; int x; int y; public Player(Game game) { this.game = game; x = 0; y = 0; image = game.getImage(game.getCodeBase(),"images/Player.png"); } public void paint(Graphics g) { g.drawImage(image,x,y,game); } @Override public void keyTyped(KeyEvent e) { return; } @Override public void keyPressed(KeyEvent e) { switch (e.getKeyCode()) { case KeyEvent.VK_A: x -= 1; break; case KeyEvent.VK_D: x += 1; break; case KeyEvent.VK_S: y += 1; break; case KeyEvent.VK_W: y -= 1; break; } game.repaint(); } @Override public void keyReleased(KeyEvent e) { return; } } 解决方法
面板可能要么没有焦点,要么没有焦点.
试试这个代码.我将键更改为左/右/上/下箭头.为简单起见,我把它留作了基于AWT的applet. // <applet code='Game' width=400 height=100></applet> import java.applet.*; import java.awt.*; import java.awt.event.*; public class Game extends Applet implements KeyListener { Player player; @Override public void init() { player = new Player(getImage(32)); addKeyListener(this); setFocusable(true); requestFocusInWindow(); } @Override public void paint(Graphics g) { player.paint(g); } public Image getImage(int size) { Image img = createImage(size,size); Graphics g = img.getGraphics(); g.setColor(Color.RED); g.fillRect(0,size,size); g.dispose(); return img; } @Override public void keyTyped(KeyEvent e) { return; } @Override public void keyPressed(KeyEvent e) { switch (e.getKeyCode()) { case KeyEvent.VK_LEFT: player.x -= 1; break; case KeyEvent.VK_RIGHT: player.x += 1; break; case KeyEvent.VK_DOWN: player.y += 1; break; case KeyEvent.VK_UP: player.y -= 1; break; } repaint(); } @Override public void keyReleased(KeyEvent e) { return; } } class Player { Image image; int x; int y; public Player(Image image) { x = 0; y = 0; this.image = image; } public void paint(Graphics g) { g.drawImage(image,null); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ?DRF?-----三大认证组件--认证组件
- JDK8中新增的原子性操作类LongAdder详解
- Java / Swing:低调的按钮高度?
- java获取微信accessToken的方法
- 解决Springboot2.1.x配置Activiti7单独数据源问题
- springboot+RabbitMQ+InfluxDB+Grafara监控实践
- orm – 将Glassfish v2升级到JPA 2.0?
- Java线程之锁对象Lock-同步问题更完美的处理方式代码实例
- java – 处理IllegalThreadStateException
- java – 匕首2麻烦@注入FirebaseMessagingService