Java_让一个图片移动的效果

本文介绍了如何使用Java实现一个图片移动的程序。通过CodeMao.java和MoveFrame.java两个类,利用继承Object和JFrame实现。文章提供了详细的代码示例,并指导了如何设置项目结构和引入图片资源。

  上一个博客,这位叫烟溪彭于晏 的博主对我的代码进行了修改,感谢!这篇博客,我会把这些代码公布了出来!

  下图是这个项目的工程表:

  

 其中,CodeMao.java和MoveFrame.java是两个类,其中codemao继承object,moveframe继承jframe类。下面的图片是我在Bing上面搜“编程猫图片”后截取的,可自行查找。那个image文件夹是先右击项目,然后去New菜单,较下面的一项有一个叫“Source Folder”的选项,点击然后创建即可。codemao.jpg图片是先找到codemao.jpg所在的位置,然后拖动文件至项目中的image文件夹,按OK就可以了。

  废话不多说,上代码!

  codemao.java的代码如下:

package myProjcet;

import java.awt.Image;
import javax.swing.ImageIcon;
import java.awt.event.*;

/**
 * 编程猫类
 */

public class CodeMao {
	
	//坐标(初始化)
	private static int x = 0,y = 0;
	//image对象
	private Image img;
	
	/**
	 * 构造方法
	 */
	public CodeMao() {
		//实例化img对象
		img = new ImageIcon("image/codemao.jpg").getImage();
	}
	
	/**
	 * 获取x
	 * @return 编程猫的x
	 */
	public int getX() {
		return x;
	}
	
	/**
	 * 获取y
	 * @return 编程猫的y
	 */
	public int getY() {
		return y;
	}
	
	/**
	 * 加x函数
	 */
	public void X_add(int num) {
		x += num;
	}
	
	/**
	 * 加y函数
	 */
	public void Y_add(int num) {
		y += num;
	}
	
	/**
	 * 获取codemao图片的函数
	 * @return codemao图片
	 */
	public Image getImage() {
		return img;
	}
}

  MoveFrame.java的代码如下:

package myProjcet;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

/**
 * “移动”窗体 该实例可以让编程猫移动
 */

public class MoveFrame extends JFrame {
	/**
	 * 全部变量
	 */
	public static CodeMao cat;
	
	/**
	 * 构造方法
	 */
	public MoveFrame() {
//		属性
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(500, 500);
		setLocationRelativeTo(null);

//		创建codemao对象
		cat = new CodeMao();

//		panel对象,方便画图
		JPanel jp = new panel();
		setContentPane(jp);
		
//		添加键盘敲击事件
		addKeyListener(new KeyListener() {

			public void keyTyped(KeyEvent e) {}
			@Override
			public void keyPressed(KeyEvent e) {
				/**
				 *按下事件
				 */
				int code = e.getKeyCode();
				//按w
				if (code==e.VK_W) {
					cat.Y_add(-5);
				}
				//按s
				if (code==e.VK_S) {
					cat.Y_add(5);
				}
				//按a
				if (code==e.VK_A) {
					cat.X_add(-5);
				}
				//按d
				if (code==e.VK_D) {
					cat.X_add(5);
				}
			}
			public void keyReleased(KeyEvent e) {}
			
		});
		
		//线程对象
		new Thread() {
			public void run() {
				//死循环
				while (true) {
					jp.repaint();
				}
			}
		}.start();
	}

	/**
	 * 主方法
	 */
	public static void main(String[] args) {
		new MoveFrame().setVisible(true);
	}

	/**
	 * panel 类
	 */
	private class panel extends JPanel {
		public void paint(Graphics g) {
			super.paintComponent(g);
			g.drawImage(cat.getImage(), cat.getX(), cat.getY(), this);
			
		}
	}
}

就这,喜欢的可以关注我哦!希望能吸收!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值