开发工具选择的是idea,创建Java的工程,cn.tx.img包结构,从今天提供的资料中导入资源中提供好的Tom猫所有的图片。
在cn.tx包下创建主程序,开始编写程序代码。
运行的效果
2. 代码实现的步骤
主代码
package cn.tx; import javax.imageio.ImageIO; import javax.swing.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * 拓薪教育 -- 腾讯课程认证机构 * 樱木老师 */ public class TomGame extends JFrame implements Runnable{ // 生气图片集合 private List<ImageIcon> angryIcons = new ArrayList<>(); // 吃饭 图片集合 private List<ImageIcon> eatIcons = new ArrayList<>(); // 喝水 private List<ImageIcon> drinkIcons = new ArrayList<>(); // 图片 private static JLabel bgLabel = new JLabel(); // 吃按钮 private static JLabel eatLabel = new JLabel(); // 喝水按钮 private static JLabel drinkLabel = new JLabel(); // 定义下标值 private static int num = 0; // 点击按钮,切换动作 private static String action = "angry"; public TomGame(){ try { // 加载生气图片,一共26张图片 for (int i = 0; i < 26; i++) { // 图片的路径 String path = "img/Animations/Angry/angry_"+(i<10?"0":"")+i+".jpg"; // 读取图片 BufferedImage image = ImageIO.read(TomGame.class.getResource(path)); // 图片 ImageIcon icon = new ImageIcon(image); // 存入到集合中 angryIcons.add(icon); } // 吃东西的图片 eatLabel.setIcon(new ImageIcon(TomGame.class.getResource("img/Buttons/eat.png"))); // 吃集合 for (int i = 0; i < 40; i++) { // 图片的路径 String path = "img/Animations/Eat/eat_"+(i<10?"0":"")+i+".jpg"; // 读取图片 BufferedImage image = ImageIO.read(TomGame.class.getResource(path)); // 图片 ImageIcon icon = new ImageIcon(image); // 存入到集合中 eatIcons.add(icon); } // 吃东西的图片 drinkLabel.setIcon(new ImageIcon(TomGame.class.getResource("img/Buttons/drink.png"))); // 吃集合 for (int i = 0; i < 81; i++) { // 图片的路径 String path = "img/Animations/Drink/drink_"+(i<10?"0":"")+i+".jpg"; // 读取图片 BufferedImage image = ImageIO.read(TomGame.class.getResource(path)); // 图片 ImageIcon icon = new ImageIcon(image); // 存入到集合中 drinkIcons.add(icon); } } catch (IOException e) { e.printStackTrace(); } } /** * 线程run方法 */ @Override public void run() { while (true){ // 没循环一次,让num+1,从集合中取值 num++; try { // 判断当前用户点击了什么按钮 // 当用户点击了生气的按钮 if("angry".equals(action)){ // 设置图片 bgLabel.setIcon(angryIcons.get(num)); int size = angryIcons.size()-1; // 判断num if(num == size){ num = 0; } } // 当用户点击了吃东西按钮 if("eat".equals(action)){ // 设置图片 bgLabel.setIcon(eatIcons.get(num)); int size = eatIcons.size()-1; // 判断num if(num == size){ num = 0; } } // 当用户点击了吃东西按钮 if("drink".equals(action)){ // 设置图片 bgLabel.setIcon(drinkIcons.get(num)); int size = drinkIcons.size()-1; // 判断num if(num == size){ num = 0; } } // 每100毫秒一针 Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } /** * 主函数 * @param args */ public static void main(String[] args) { // 窗口 TomGame frame = new TomGame(); // 设置标题 frame.setTitle("可爱的Tom猫"); // 设置大小 frame.setSize(600,700); // 设置居中显示 frame.setLocationRelativeTo(null); // 设置关闭 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 清空布局方式 frame.setLayout(null); // 设置吃饭图片位置 eatLabel.setBounds(10,420,60,60); frame.add(eatLabel); // 绑定鼠标点击事件 eatLabel.addMouseListener(new MouseAdapter() { /** * 当用户一点击按钮,就切换效果 * @param e */ @Override public void mouseClicked(MouseEvent e) { action = "eat"; num = 0; } }); // 设置吃饭图片位置 drinkLabel.setBounds(10,480,60,60); frame.add(drinkLabel); // 绑定鼠标点击事件 drinkLabel.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { action = "drink"; num = 0; } }); // 设置位置 bgLabel.setBounds(0,0,600,700); // 添加组件 frame.add(bgLabel); // 点击其他位置,切换会生气图片 bgLabel.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { action = "angry"; num = 0; } }); // 启动线程 new Thread(frame).start(); // 显示窗口 frame.setVisible(true); } }
根据本人多年从业以及学习经验,录制了一套最新的Java精讲视频教程,如果你现在也在学习Java,在入门学习Java的过程当中缺乏系统的学习教程,你可以加群654631948领取下学习资料,面试题,开发工具等,群里有资深java老师做答疑,每天也会有基础部分及架构的直播课,也可以加我的微信renlliang2013做深入沟通。
java基础教程:https://ke.qq.com/course/149432?tuin=57912c43
Java分布式互联网架构/微服务/高性能/springboot/springcloud:
https://ke.qq.com/course/179440?tuin=57912c43