JAVA项目之天天酷跑-Day02

  • 开始游戏界面制作
    • 分析要求
    • MainFrame类
      • 创建MainFrame类
      • MainFrame构造函数
        • 实现开始游戏按钮(不添加鼠标事件监听)
        • 实现帮助和退出按钮
        • 添加背景画板
        • 设置Frame的基本属性
      • 实现MainPanel类
      • 添加按钮的鼠标事件监听
      • 添加main函数并进行调试
    • 修改LoginFrame

项目借鉴: https://blog.csdn.net/qq_45909299

开始游戏界面制作

分析要求

  • 添加开始游戏,帮助,退出3个按钮,每个按钮鼠标移入时由暗变亮,移开时油亮变暗
  • 点击开始游戏则进入下一个界面
  • 点击帮助出现提示信息
  • 点击退出则退出游戏
  • 在登录界面中,若密码和用户名匹配则进入新的界面

MainFrame类

创建MainFrame类

仍然在cn.sqc.runday.view包下新建MainFrame的class
MainFrame要继承JFrame类并且要实现MouseListener接口,并添加需要实现的函数

public class MainFrame extends JFrame implements MouseListener {//创建开始 帮助 离开按钮JLabel start, help, exit;JPanel MainPanel;@Overridepublic void mouseClicked(MouseEvent e) {}@Overridepublic void mousePressed(MouseEvent e) {}@Overridepublic void mouseReleased(MouseEvent e) {}@Overridepublic void mouseEntered(MouseEvent e) {}@Overridepublic void mouseExited(MouseEvent e) {}
}

MainFrame构造函数

public MainFrame() {}

实现开始游戏按钮(不添加鼠标事件监听)

public MainFrame() {String path;path = getClass().getClassLoader().getResource("resources/images/hh1.png").getPath();start = new JLabel(new ImageIcon(path));start.setBounds(350, 320, 150, 40);start.setEnabled(false);start.addMouseListener(this);this.add(start);}
String path;
path = getClass().getClassLoader().getResource("resources/images/hh1.png").getPath();
start = new JLabel(new ImageIcon(path));

这段代码非常重要,要用上一次提到的方法加载图片,否则可能三个按钮都没了

start.setEnabled(false);

将start按钮起初状态设为暗的

实现帮助和退出按钮

同开始游戏按钮相同

path = getClass().getClassLoader().getResource("resources/images/hh2.png").getPath();
help = new JLabel(new ImageIcon(path));
help.setBounds(350, 420, 150, 40);
help.setEnabled(false);
help.addMouseListener(this);
this.add(help);path = getClass().getClassLoader().getResource("resources/images/hh3.png").getPath();
exit = new JLabel(new ImageIcon(path));
exit.setBounds(350, 520, 150, 40);
exit.setEnabled(false);
exit.addMouseListener(this);
this.add(exit);

添加背景画板

MainPanel panel = new MainPanel();
this.add(panel);

同上一次MainPanel稍后实现

设置Frame的基本属性

this.setSize(1200, 730);
this.setLocationRelativeTo(null);//居中
//         this.setUndecorated(true);//隐藏边框
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
path = getClass().getClassLoader().getResource("resources/images/115.png").getPath();
this.setIconImage(new ImageIcon(path).getImage());//logo
this.setVisible(true);

实现MainPanel类

同上次基本一致,添加背景图片然后重写paint函数

class MainPanel extends JPanel {Image background;public MainPanel() {try {String path = getClass().getClassLoader().getResource("resources/images/main.png").getPath();background = ImageIO.read(new File(path));} catch (Exception e) {e.printStackTrace();}}public void paint(Graphics g) {g.drawImage(background, 0, 0, 1200, 730, null);}}

添加按钮的鼠标事件监听

直接上代码,应该也能看懂

@Override
public void mouseClicked(MouseEvent e) {if(e.getSource().equals(start)) {//跳转到下一界面}else if(e.getSource().equals(exit)) {dispose();}else if(e.getSource().equals(help)) {JOptionPane.showMessageDialog(null, "有问题请联系开发者");}
}@Override
public void mousePressed(MouseEvent e) {}@Override
public void mouseReleased(MouseEvent e) {}@Override
public void mouseEntered(MouseEvent e) {//鼠标移入if(e.getSource().equals(start)) {start.setEnabled(true);}else if(e.getSource().equals(help)) {help.setEnabled(true);}else if(e.getSource().equals(exit)) {exit.setEnabled(true);}
}@Override
public void mouseExited(MouseEvent e) {//鼠标移出if(e.getSource().equals(start)) {start.setEnabled(false);}else if(e.getSource().equals(help)) {help.setEnabled(false);}else if(e.getSource().equals(exit)) {exit.setEnabled(false);}
}

添加main函数并进行调试

public static void main(String[] args) {new MainFrame();
}

run一下



至此,MainFrame就已经大功告成了

修改LoginFrame

if("".equals(userName) && "".equals(password)) {//登陆成功JOptionPane.showMessageDialog(null, "欢迎" + userName + "来到天天酷跑");//跳转到下一个界面new MainFrame();//关闭当前界面dispose();
}

添加new MainFrame();


完成

最后附上代码

package cn.sqc.runday.view;import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;/*** @author THEO* date 2021-3-24*/public class MainFrame extends JFrame implements MouseListener {//创建开始 帮助 离开按钮JLabel start, help, exit;JPanel MainPanel;public MainFrame() {String path;path = getClass().getClassLoader().getResource("resources/images/hh1.png").getPath();start = new JLabel(new ImageIcon(path));start.setBounds(350, 320, 150, 40);start.setEnabled(false);start.addMouseListener(this);this.add(start);path = getClass().getClassLoader().getResource("resources/images/hh2.png").getPath();help = new JLabel(new ImageIcon(path));help.setBounds(350, 420, 150, 40);help.setEnabled(false);help.addMouseListener(this);this.add(help);path = getClass().getClassLoader().getResource("resources/images/hh3.png").getPath();exit = new JLabel(new ImageIcon(path));exit.setBounds(350, 520, 150, 40);exit.setEnabled(false);exit.addMouseListener(this);this.add(exit);//实现背景图片及窗体属性MainPanel panel = new MainPanel();this.add(panel);//设置窗体基本属性大小 居中 边框隐藏 默认关闭按钮 logo图标this.setSize(1200, 730);this.setLocationRelativeTo(null);//居中
//         this.setUndecorated(true);//隐藏边框this.setDefaultCloseOperation(EXIT_ON_CLOSE);path = getClass().getClassLoader().getResource("resources/images/115.png").getPath();this.setIconImage(new ImageIcon(path).getImage());//logothis.setVisible(true);}@Overridepublic void mouseClicked(MouseEvent e) {if(e.getSource().equals(start)) {//跳转到下一界面}else if(e.getSource().equals(exit)) {dispose();}else if(e.getSource().equals(help)) {JOptionPane.showMessageDialog(null, "有问题请联系开发者");}}@Overridepublic void mousePressed(MouseEvent e) {}@Overridepublic void mouseReleased(MouseEvent e) {}@Overridepublic void mouseEntered(MouseEvent e) {if(e.getSource().equals(start)) {start.setEnabled(true);}else if(e.getSource().equals(help)) {help.setEnabled(true);}else if(e.getSource().equals(exit)) {exit.setEnabled(true);}}@Overridepublic void mouseExited(MouseEvent e) {if(e.getSource().equals(start)) {start.setEnabled(false);}else if(e.getSource().equals(help)) {help.setEnabled(false);}else if(e.getSource().equals(exit)) {exit.setEnabled(false);}}class MainPanel extends JPanel {Image background;public MainPanel() {try {String path = getClass().getClassLoader().getResource("resources/images/main.png").getPath();background = ImageIO.read(new File(path));} catch (Exception e) {e.printStackTrace();}}public void paint(Graphics g) {g.drawImage(background, 0, 0, 1200, 730, null);}}public static void main(String[] args) {new MainFrame();}
}

JAVA项目之天天酷跑-Day02相关推荐

  1. Java 项目实战天天酷跑

    点击上方 Java后端,选择 设为星标 优质文章,及时送达 排版:Java后端:来源:blog.csdn.net/qq_45909299 首先,写一个需求文档: 一.项目名称:<天天酷跑> ...

  2. 【C语言项目】——天天酷跑

    C语言项目--天天酷跑 文章目录 C语言项目--天天酷跑 前言 注意事项 源代码分享 效果展示 总结 前言 自学编程最有效的就是通过一些自己感兴趣的项目去学习,如果只是纯粹的听取知识点很难坚持,在项目 ...

  3. java 宠物合成 游戏,天天酷跑5个S级宠物能合成什么宠物 5个S级宠物合成宠物介绍...

    今天小编为大家带来了天天酷跑5个S级宠物能合成什么宠物 5个S级宠物合成宠物介绍,感兴趣的朋友们可以跟着小编去下文了解一下哦! 天天酷跑今天上线了万圣节的活动,同时也上线了新的版本,新的版本开启了宠物 ...

  4. java窗体添加背景图片_Java项目实战之实战之天天酷跑(四):游戏主界面

    接上文,本文将实现游戏主界面,功能如下: 移动的背景图片.动态的玩家.玩家的移动功能.五种障碍物持续出现.玩家和障碍物的碰撞.暂停.继续功能. 首先,看一下整体效果: 动图实在太大,几秒钟的 Gif ...

  5. 【Java练手项目七】Java项目实战之天天酷跑

    首先,写一个需求文档: 一.项目名称:<天天酷跑>(RunDay) 二.功能介绍: 闯关类游戏,玩家登录后,选择进入游戏,通过键盘控制玩家的上下左右移动,来躲避 障碍物和吃金币,玩家躲避的 ...

  6. Java项目实战之天天酷跑

    来源:blog.csdn.net/qq_45909299 首先,写一个需求文档: 一.项目名称:<天天酷跑>(RunDay) 二.功能介绍: 闯关类游戏,玩家登录后,选择进入游戏,通过键盘 ...

  7. java实现天天酷跑开发_Java项目实战之天天酷跑

    作者:MyHuey 来源:blog.csdn.net/qq_45909299 首先,写一个需求文档: 一.项目名称:<天天酷跑>(RunDay) 二.功能介绍:闯关类游戏,玩家登录后,选择 ...

  8. java 实战_Java项目实战之天天酷跑

    首先,写一个需求文档: 一.项目名称:<天天酷跑>(RunDay) 二.功能介绍: 闯关类游戏,玩家登录后,选择进入游戏,通过键盘控制玩家的上下左右移动,来躲避 障碍物和吃金币,玩家躲避的 ...

  9. 用Java实现天天酷跑(附源码),这个真的有点强了!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:MyHuey https://blog.csdn.n ...

最新文章

  1. Windows活动目录系列---活动目录版本迁移概述
  2. Android 改变AlertDialog的大小
  3. 窗口分析函数_4_计算累加值
  4. 2013\National _Java_A\3.埃及分数
  5. redis常用数据类型的场景,你真的用对了么?
  6. 使用Spring数据和Thymeleaf实现Bootstrap分页
  7. 委托模型和事件模型 [C#]
  8. Spring Boot基础学习笔记07:Spring Boot整合JPA
  9. php中global什么意思,php中global与$GLOBAL的用法及区别(转载)
  10. java自行车怎么调档_变速的自行车如何调档
  11. 软负载和硬负载的区别分析
  12. 字节跳动技术面都过了,结果还是被刷了,问HR原因竟是。。。
  13. java俄罗斯方块七中图形类_俄罗斯方块shell 实现
  14. 中文真伟大!竟然有只能看,不能读的文章
  15. mysql主从复制mmm_MMM+MYSQL主从同步
  16. STM32两轮自平衡小车物料采购清单
  17. Linux知识点求职应聘必备
  18. 图像分类白盒对抗攻击技术总结
  19. iOS 越狱之后无法查看private、var等文件
  20. Unity 影音视频播放中控系统(适用于展厅、影音厅),带UDP控制切换!

热门文章

  1. PopStar(消灭星星)游戏源代码下载、分析及跨平台移植---第三篇(分数)
  2. ruoyi后台管理系统docker部署,基于ruoyi-3.7.0
  3. .NET中的Kerberos验证与SPN设置
  4. 第一次使用爱斯维尔(Elsevier)论文模板注意事项
  5. 果壳游戏Acwing
  6. Alamofire的设计之道
  7. uniapp生成二维码和条形码
  8. 【K8S 八】使用containerd作为CRI
  9. python token_token --- 与Python解析树一起使用的常量 — Python 3.8.6 文档
  10. http://www.dnc.com.cn