JAVA项目之天天酷跑-Day02
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相关推荐
- Java 项目实战天天酷跑
点击上方 Java后端,选择 设为星标 优质文章,及时送达 排版:Java后端:来源:blog.csdn.net/qq_45909299 首先,写一个需求文档: 一.项目名称:<天天酷跑> ...
- 【C语言项目】——天天酷跑
C语言项目--天天酷跑 文章目录 C语言项目--天天酷跑 前言 注意事项 源代码分享 效果展示 总结 前言 自学编程最有效的就是通过一些自己感兴趣的项目去学习,如果只是纯粹的听取知识点很难坚持,在项目 ...
- java 宠物合成 游戏,天天酷跑5个S级宠物能合成什么宠物 5个S级宠物合成宠物介绍...
今天小编为大家带来了天天酷跑5个S级宠物能合成什么宠物 5个S级宠物合成宠物介绍,感兴趣的朋友们可以跟着小编去下文了解一下哦! 天天酷跑今天上线了万圣节的活动,同时也上线了新的版本,新的版本开启了宠物 ...
- java窗体添加背景图片_Java项目实战之实战之天天酷跑(四):游戏主界面
接上文,本文将实现游戏主界面,功能如下: 移动的背景图片.动态的玩家.玩家的移动功能.五种障碍物持续出现.玩家和障碍物的碰撞.暂停.继续功能. 首先,看一下整体效果: 动图实在太大,几秒钟的 Gif ...
- 【Java练手项目七】Java项目实战之天天酷跑
首先,写一个需求文档: 一.项目名称:<天天酷跑>(RunDay) 二.功能介绍: 闯关类游戏,玩家登录后,选择进入游戏,通过键盘控制玩家的上下左右移动,来躲避 障碍物和吃金币,玩家躲避的 ...
- Java项目实战之天天酷跑
来源:blog.csdn.net/qq_45909299 首先,写一个需求文档: 一.项目名称:<天天酷跑>(RunDay) 二.功能介绍: 闯关类游戏,玩家登录后,选择进入游戏,通过键盘 ...
- java实现天天酷跑开发_Java项目实战之天天酷跑
作者:MyHuey 来源:blog.csdn.net/qq_45909299 首先,写一个需求文档: 一.项目名称:<天天酷跑>(RunDay) 二.功能介绍:闯关类游戏,玩家登录后,选择 ...
- java 实战_Java项目实战之天天酷跑
首先,写一个需求文档: 一.项目名称:<天天酷跑>(RunDay) 二.功能介绍: 闯关类游戏,玩家登录后,选择进入游戏,通过键盘控制玩家的上下左右移动,来躲避 障碍物和吃金币,玩家躲避的 ...
- 用Java实现天天酷跑(附源码),这个真的有点强了!
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:MyHuey https://blog.csdn.n ...
最新文章
- Windows活动目录系列---活动目录版本迁移概述
- Android 改变AlertDialog的大小
- 窗口分析函数_4_计算累加值
- 2013\National _Java_A\3.埃及分数
- redis常用数据类型的场景,你真的用对了么?
- 使用Spring数据和Thymeleaf实现Bootstrap分页
- 委托模型和事件模型 [C#]
- Spring Boot基础学习笔记07:Spring Boot整合JPA
- php中global什么意思,php中global与$GLOBAL的用法及区别(转载)
- java自行车怎么调档_变速的自行车如何调档
- 软负载和硬负载的区别分析
- 字节跳动技术面都过了,结果还是被刷了,问HR原因竟是。。。
- java俄罗斯方块七中图形类_俄罗斯方块shell 实现
- 中文真伟大!竟然有只能看,不能读的文章
- mysql主从复制mmm_MMM+MYSQL主从同步
- STM32两轮自平衡小车物料采购清单
- Linux知识点求职应聘必备
- 图像分类白盒对抗攻击技术总结
- iOS 越狱之后无法查看private、var等文件
- Unity 影音视频播放中控系统(适用于展厅、影音厅),带UDP控制切换!
热门文章
- PopStar(消灭星星)游戏源代码下载、分析及跨平台移植---第三篇(分数)
- ruoyi后台管理系统docker部署,基于ruoyi-3.7.0
- .NET中的Kerberos验证与SPN设置
- 第一次使用爱斯维尔(Elsevier)论文模板注意事项
- 果壳游戏Acwing
- Alamofire的设计之道
- uniapp生成二维码和条形码
- 【K8S 八】使用containerd作为CRI
- python token_token --- 与Python解析树一起使用的常量 — Python 3.8.6 文档
- http://www.dnc.com.cn