基于java实现TomCat效果

疫情在家,“停课不停学” ,第一天的公开课堂,收获满满,实现了TomCat动画:

效果图:

代码:

package cn.yun;

import javax.swing.JFrame;

/**
 * @author 作者 志:
 * @version 创建时间:2020年2月14日 下午2:44:55
 */
public class MyTom {

	// 程序的入口
	public static void main(String[] args) {
		// 窗口 对象名 = 新 窗口
		JFrame frame = new JFrame();
		/*
		 * 添加画布
		 */
		MyTomPanel panel = new MyTomPanel();
		frame.add(panel);

		/*
		 * 添加线程
		 */
		Thread t = new Thread(panel);
		t.start();

		/*
		 * 添加鼠标监听事件
		 */
		panel.addMouseListener(panel);

		// 1、设置大小
		frame.setSize(320, 512);
		// 2、设置居中显示
		frame.setLocationRelativeTo(null);
		// 3、设置关闭模式
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// 4、设置可见性
		frame.setVisible(true);
	}
}

画布类:

1、继承:子类继承父类,使用父类的方法提高编程效率
2、绘制背景图片
3、添加多线程,动画效果 
4、添加按钮图片 
       4.1 声明按钮图片 eat 
       4.2 初始化按钮图片 构造方法中
       4.3 绘制按钮图片 paint方法中
5、添加鼠标监听事件 
          5.1 Runnable后面添加MouseListener监听接口 
          5.2 MyTom类中 添加鼠标监听事件
          5.3 实现MouseListener监听接口的方法
6、添加updateImage方法 修改图片路径 
7、设置喝牛奶动画效果
      7.1 设置按钮图片 drink 
      7.2 初始化按钮图片 
      7.3paint方法中绘制喝牛奶图片
      7.4 鼠标监听事件中 添加判断区域 并修改count 以及updateImage方法
8、无按钮图片 
         8.1 绘制空白矩形框
         8.2 鼠标监听事件 根据矩形框坐标进行判断

public class MyTomPanel extends JPanel implements Runnable, MouseListener {

	// 背景图,声明没有值
	public static BufferedImage back;
	// 图片统计总数
	public int count = -1;
	// 图片下标值
	public int index = 0;
	// 图片存放路径
	public String[] eatList = new String[100];
	// 吃鸟图片按钮
	public static BufferedImage eat;
	// 喝牛奶图片按钮
	public static BufferedImage drink;

	// 构造方法
	public MyTomPanel() {
		// super();
		for (int i = 0; i < 40; i++) {
			if (i < 10) {
				eatList[i] = "Animations/eat/eat_0" + "i" + ".jpg";
			} else {
				eatList[i] = "Animations/eat/eat_" + "i" + ".jpg";
			}

		}
	}

	static {
		try {
			back = ImageIO.read(MyTomPanel.class.getResource("Animations/Eat/eat_00.jpg"));
			eat = ImageIO.read(MyTomPanel.class.getResource("ButtonS/eat.png"));
			drink = ImageIO.read(MyTomPanel.class.getResource("Buttons/drink.png"));

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	// 绘制方法
	public void paint(Graphics g) {
		super.paint(g);
		/*
		 * back:需要绘制哪张图片 0,0:从什么位置开始绘制,窗口左上角 320,512:图片绘制宽度以及高度
		 * null:默认绘制在当前对象上MyTomPanel类
		 */
		// 绘制背景图片
		g.drawImage(back, 0, 0, 320, 512, null);
		// 绘制按钮图片
		g.drawImage(eat, 30, 350, 60, 60, null);
		// 绘制吃鸟图片
		g.drawImage(drink, 30, 420, 60, 60, null);

	}

	// 实现方法 Runnable接口所实现的方法
	// 自动调用run方法
	@Override
	public void run() {
		while (true) {
			// 1、修改业务逻辑

			/*
			 * count>index 执行动画效果 -1>0
			 */
			if (count > index) {
				try {
					back = ImageIO.read(MyTomPanel.class.getResource(eatList[index]));
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				index++;
			} else {
				index = 0;
				count = -1;
			}

			// 2、线程睡眠调整频率值
			try {
				Thread.sleep(10);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			// 3、绘制重绘方法
			repaint();
		}
	}

	// 鼠标监听方法
	// 鼠标按下
	@Override
	public void mousePressed(MouseEvent e) {
		// TODO Auto-generated method stub
		// 1、获取鼠标的坐标值
		int mouseX = e.getX();
		int mouseY = e.getY();
		// 判断是否单击该区域
		// 吃鸟
		if (mouseX > 30 && mouseX < 30 + 60 && mouseY > 350 && mouseY < 350 + 60) {
			// 修改count的值
			count = 40;
			// 调用图片数组修改
			updateImage("eat");
		}
		// 喝牛奶
		if (mouseX > 30 && mouseX < 30 + 60 && mouseY > 420 && mouseY < 420 + 60) {
			count = 81;
			updateImage("drink");
		}
		// 头晕
		if (mouseX > 100 && mouseX < 100 + 150 && mouseY > 100 && mouseY < 100 + 150) {
			count = 80;
			updateImage("Knockout");
		}
	}

	// 自定义修改图片,修改图片数组路径值
	private void updateImage(String name) {
		// TODO Auto-generated method stub
		for (int i = 0; i < count; i++) {
			// 对eatList变量重新赋值
			if (i < 10) {
				eatList[i] = "Animations/" + name + "/" + name + "_0" + i + ".jpg";
			} else {
				eatList[i] = "Animations/" + name + "/" + name + "_" + i + ".jpg";
			}
		}
	}
发布了148 篇原创文章 · 获赞 203 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/qq_42680327/article/details/104315735