基於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";
			}
		}
	}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章