`
百合不是茶
  • 浏览: 344531 次
社区版块
存档分类
最新评论

键盘监听器移动图片 -----简单实现移动

阅读更多

使用键盘监听器来控制图片的移动:

 



 

 

 

 1,创建一个窗体,  重写这个paint()方法来绘制图片和窗体,刷新

            preson.draw();  

  如果电脑配置不是很好就只要刷新JPanel就可以了,  不用刷新JFrame(JFrame比较消耗内存)

 

2,将图片看成是一个对象,新建一个图像类,    需要坐标和图片   ,

 

	 public  int x ,y;
	  ImageIcon icon;
	   public preson(int x, int y, ImageIcon icon) {
		super();
		this.x = x;
		this.y = y;
		this.icon = icon;
	}
	   //绘制图片
	   public void draw(Graphics g){
		   g.drawImage(icon.getImage(), x,y, null);
	   }
	   

 

 

3,添加监听器来控制图片的移动,键盘监听器KeyListener在实现监听器时,必须要重写方法

在控制图片移动的时,只需要键盘的按下键就可以

 

    public void keyTyped(KeyEvent e){}

    /**
     * Invoked when a key has been pressed.
     * See the class description for {@link KeyEvent} for a definition of
     * a key pressed event.
     */
//按下
    public void keyPressed(KeyEvent e){}

    /**
     * Invoked when a key has been released.
     * See the class description for {@link KeyEvent} for a definition of
     * a key released event.
     */
//释放
    public void keyReleased(KeyEvent e){}

 

 

键盘监听器控制的是图片,需要将图片通过构造方法传给监听器,才可以继续写移动的方法,

 

 

      int code= e.getKeyCode();可以得到按下键的一个数,通过这个数可以使用switch来控制移动的方向及每次移动的距离

 

移动的方向必须是KeyEvent.vk_需要移动的方向

移动的距离必须是图片类.x -=10     preson.x -=10;

 

          public void keyPressed(KeyEvent e){
      switch (code) {
	 case KeyEvent.VK_LEFT: //向左
		 preson.x -=10;
		break;
	 case KeyEvent.VK_RIGHT : //向右
		 preson.x +=10;
			break;
	 case KeyEvent.VK_UP : //向上
		 preson.y -=10;
			break;
	 case  KeyEvent.VK_DOWN : //向下
		 preson.y +=10;
			break;

	default:
		break;
	}
}

 

 

4,上述3个步骤可以移动图片,但是图片会不断的闪,这时需要开启线程来控制刷新

      通过构造方法将JPanel传给需要去启动线程的对象

     在run()方法中直接调用JPanelde repaint();方法   ,并且让线程休眠一定的时间再刷新  就解决了图片不断闪的问题

      

public class UpdateThread extends Thread {
	GameUI ui;
  public UpdateThread(GameUI ui){
	  this.ui = ui;
  }
	 
	public void  run(){
		while(true){
			
			ui.repaint();
			
		try {
			Thread.sleep(10);
		} catch (InterruptedException e) {
			e.printStackTrace();
			}
		}
	}
}

 

本人在实际编写中没有把图片当成是一个对象来处理,直接在主窗体中将ImageIcon icon = new ImageIcon("24.png");  中的icon作为监听对象  ,也可以实现,    但是在JAVA中要将所有的都看成是类或对象来处理 才能显示出JAVA的强大  

       

       

  本人接触游戏不久,游戏开发比较难,所以将自己理解的  通过这个平台写出来加深理解,  技术有限   如有更好的方式欢迎交流

 

      

 

 

  • 大小: 53.6 KB
  • 大小: 60.9 KB
1
0
分享到:
评论

相关推荐

    Node.js-Node.js全局键盘和鼠标侦听器

    Node.js全局键盘和鼠标侦听器

    毕业设计&课程设计-这是一个使用Qt封装的全局鼠标、键盘事件监听器的库.zip

    这是一个使用Qt封装的全局鼠标、键盘事件监听器的库,方便程序监听系统中所有的鼠标、键盘事件,就算是当前程序隐藏了、失去焦点了也可以。 qt项目,工具源码,适合毕业设计、课程设计作业,所有源码均经过严格测试...

    简单的Java游戏案例程序,包含一个玩家和一个矩形面板 主要作用是通过监听键盘输入来控制玩家在矩形面板上移动

    在构造函数中,创建一个KeyListener监听器,用于监听键盘输入事件。 在KeyListener的keyPressed方法中,调用movePlayer方法来移动玩家。 在movePlayer方法中,根据键盘输入更新玩家的位置,并确保玩家不会超出窗口的...

    窗体中的图形移动

    运用键盘监听器,控制图形的移动,希望对大家有帮助

    cmd操作命令和linux命令大全收集

    3. Nslookup-------IP地址侦测器 ,是一个 监测网络中 DNS 服务器是否能正确实现域名解析的命令行工具。它在 Windows NT/2000/XP 中均可使用,但在 Windows 98 中却没有集成这一个工具。 4. explorer-------打开...

    jnativehook, 用于Java的全局键盘和鼠标侦听器.zip

    jnativehook, 用于Java的全局键盘和鼠标侦听器 JNativeHook是一个为Java提供全局键盘和鼠标侦听器的库。 这将允许你监听全局快捷方式或者鼠标运动,否则使用纯Java就不可能。 为了完成这项任务,JNativeHook利用平台...

    键盘监听小助手LJWKeyboardHandler.zip

    监听键盘的小助手,在ViewController里注册下就能用了哟~ 非常环保的小助手,跟随试图控制器的销毁而销毁~ 可以在不同的ViewController里设置不同的辅助移动高度~ insert code in ViewController Just ...

    JAVA 实现《俄罗斯方块升级版》游戏

    游戏主界面采用Swing组件开发,并且向其注册监听器,以实现各种控制功能,综合游戏窗体的设计,其上至少需要注册三个监听器,分别是动作监听器(ActionListener)、键盘监听器(KeyListener)、选项监听器(ItemListener)...

    Java实现华容道游戏

    1、本程序主要练习使用布局管理器设计一个华容道游戏界面并练习使用事件监听器(鼠标事件、键盘事件和焦点事件)实现按钮的移动。 2、编写一个按钮的子类,使用该子类创建的对象代表华容道中的人物。通过焦点事件控制...

    毕业设计---基于java坦克大战课程设计报告.doc

    基于java坦克大战课程设计报告 摘 要 随着计算机的普及以及对电子游戏的认识,电子游戏已被越来越多的人选作放松、娱 乐的休闲方式;电子游戏既不需要专门购买游戏器材,也不... 代码如下: /* * 移动按键键盘监听器 *

    Java-打飞机程序设计及论文

    接下来,我们添加了一个键盘事件监听器,该监听器将捕捉玩家按下的键盘按键。当左箭头键被按下时,我们将飞机的x坐标减少10,这样飞机向左移动。当右箭头键被按下时,我们将飞机的x坐标增加10,使飞机向右移动。 ...

    时刻239K报警主机说明书

    ◆ 8有线+8无线防区微电脑控制,外接键盘编程,可选配LED显示键盘或LCD中文液晶键盘 ◆ 主机与键盘分离式设计,最多可扩展至16个键盘,键盘自带一个紧急报警按钮 ◆ 可配接各种对射探头、防火、防盗探头及紧急开关 ...

    基于Swing的打砖块游戏的Java程序

    程序使用了一些事件监听器,如 addKeyListener 监听器来检测键盘事件,以便控制 paddle 的移动。程序还使用了一些 Swing 组件和方法来创建和显示游戏窗口、方块和球。程序的入口 main 方法通过调用 SwingUtilities....

    飞机大战基于Java中swing库进行开发

    使用键盘和鼠标对飞机进行移动,本着共同的进步的原则,关注我可免费下载资源

    cocos2d-x 坦克 tank

    2.格子计算,随机产生坦克,坦克移动,坦克发子弹,碰撞检测,键盘按键监听等等,可自己扩展。 3.代码完整,运行库完整,可成功运行。 有想做坦克小游戏或者对cocos-lua感兴趣的同学可以下载学习。 本内容资源来源于...

    JAVA画图形学程序的设计与实现.rar

    监听用户的鼠标事件和键盘事件,实现用户与程序的交互。 支持用户在绘图区域上点击、拖拽、绘制图形等操作。 图形编辑功能: 提供基本的编辑功能,如选择图形、移动图形、调整图形大小等。 支持对绘制的图形进行...

    俄罗斯方块

    添加菜单栏并给菜单栏内的子菜单添加监听器,实现相关功能。添加键盘监听,控制方块下落。采用了JApplet和AudioClip类进行音乐播放,把歌曲当成文件进行操作,然后把文件转化成URL格式(f.toURL)进行播放。

    javascipt/H5飞机大战

    定义了玩家飞机和敌机的属性,以及键盘事件监听器和游戏循环。在游戏循环中,我们不断更新画布上的元素,包括玩家飞机、玩家子弹、敌机和分数。我们还检测了玩家子弹和敌机之间的碰撞,以及玩家飞机和敌机之间的碰撞...

    课程设计-基于python的小黄狗跑酷游戏小游戏源代码.zip

    使用键盘监听、鼠标监听来响应用户的外部输入;引入随机函数,增加游戏随机性;使用碰撞检测,处理游戏中各元素发生碰撞时产生响应的效果;使用标志位控制整个游戏的流程;计分器根据用户得分做出响应。

    入门学习Linux常用必会60个命令实例详解doc/txt

    这是因为Linux和许多版本的Unix一样,提供了虚拟控制台的访问方式,允许用户在同一时间从控制台(系统的控制台是与系统直接相连的监视器和键盘)进行多次登录。每个虚拟控制台可以看作是一个独立的工作站,工作台...

Global site tag (gtag.js) - Google Analytics