欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-10 10:07:34
...

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

 


键盘监听器移动图片 -----简单实现移动
            
    
    博客分类: JAVA 基础 键盘监听器图片移动线程分析 
 
键盘监听器移动图片 -----简单实现移动
            
    
    博客分类: JAVA 基础 键盘监听器图片移动线程分析 
 

 

 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的强大  

       

       

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

 

      

 

 

  • 键盘监听器移动图片 -----简单实现移动
            
    
    博客分类: JAVA 基础 键盘监听器图片移动线程分析 
  • 大小: 53.6 KB
  • 键盘监听器移动图片 -----简单实现移动
            
    
    博客分类: JAVA 基础 键盘监听器图片移动线程分析 
  • 大小: 60.9 KB