当前位置: 首页 > news >正文

Java超级玛丽小游戏制作过程讲解 第一天 创建窗口

package com.sxt;import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;public class MyFrame extends JFrame implements KeyListener {//设置窗口的大小为800*600public MyFrame() {this.setSize(800, 600);//设置窗口中显示this.setLocationRelativeTo(null);//设置窗口的可见性this.setVisible(true);//设置点击窗口上的关闭键,结束此程序this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口大小不可变this.setResizable(false);//向窗口添加监听器this.addKeyListener(this);//设置窗口名称this.setTitle("超级玛丽");}public static void main(String[] args) {MyFrame myframe = new MyFrame();}@Overridepublic void keyTyped(KeyEvent e) {}@Overridepublic void keyPressed(KeyEvent e) {}@Overridepublic void keyReleased(KeyEvent e) {}
}

1.基础知识:在Java中,继承是一种机制它允许一个类(子类)继承另一个类(父类)的属性和方法。通过继承,子类可以获得父类的特性,同时可以添加自己的额外功能或重写父类的方法。

public class MyFrame extends JFrame 

通过使用关键字`extends`,`MyFrame`类继承了`JFrame`类。

而`JFrame`是Swing库中提供的一个顶层窗口容器类,它提供了创建和管理图形用户界面(GUI)窗口的功能。通过继承`JFrame`类,`MyFrame`类可以获得`JFrame`的属性和方法,从而方便地创建和定制GUI窗口。

总结来说,继承`JFrame`类的好处包括:

1. 提供了一个可视化的窗口容器:`JFrame`类封装了创建和管理窗口所需的细节,使开发者能够轻松创建GUI窗口。

2. 继承已有的功能:通过继承`JFrame`类,可以直接使用`JFrame`类的方法和属性,避免了重新编写与窗口相关的基本功能。

3. 定制窗口行为:继承后,可以重写父类中的方法,以实现特定的窗口行为或自定义功能。比如,可以重写`paint()`方法来绘制自定义的界面元素。

通过继承`JFrame`类,可以更方便地创建和管理GUI窗口,并在此基础上进行定制化开发,以满足自己的需求。

2. this指的是当前对象自身,即调用该方法的对象。

//设置窗口的大小为800*600
this.setSize(800, 600);

setSize(1000,800)是一个方法调用语句,其中setSizeJFrame类的方法,用于设置窗口的大小。而this.setSize(1000,800)表示在当前对象上调用setSize方法,并传入参数1000和800来设置窗口的宽度和高度。

因此,this.setSize(1000,800)中的this指的是当前对象,即MyFrame类的实例对象。当你在创建MyFrame对象后,通过该对象调用setSize(1000,800)时,this就代表该对象本身,即对该对象进行窗口大小的设置操作。

3. 在提供的代码中,`implements KeyListener`表示`MyFrame`类实现了`KeyListener`接口。通过实现`KeyListener`接口,`MyFrame`类可以监听和响应键盘事件。

public class MyFrame extends JFrame implements KeyListener 

`KeyListener`接口定义了一组方法,用于处理键盘事件的回调。这些方法包括:

1). `keyTyped(KeyEvent e)`: 当用户在焦点组件上敲击键盘按键时调用,键盘按键产生一个字符输出。

2). `keyPressed(KeyEvent e)`: 当用户按下键盘上的一个键时调用。

3). `keyReleased(KeyEvent e)`: 当用户释放键盘上的一个键时调用。

通过实现`KeyListener`接口,可以重写这些方法,并在相应的事件发生时执行自定义的操作。例如,可以在`keyPressed()`方法中处理特定的按键操作,或者在`keyTyped()`方法中捕获并处理输入的字符。

在`MyFrame`类中实现`KeyListener`接口的主要目的是为了能够对键盘事件做出响应。通过注册监听器(使用`addKeyListener()`方法),当用户在窗口中按下、释放或键入键盘按键时,系统会触发相应的`KeyListener`方法,从而允许编写代码来处理这些事件。

需要注意的是,在使用`KeyListener`时,要确保窗口或组件具有焦点,以便能够正确地接收键盘事件。

声明:小游戏源码来自b站视频(up:编程学习会员Q),本文仅根据源码做知识性补充与注解。如存在不当使用的情况,请随时联系删除。http://【【Java项目】不到两小时用Java做出超级玛丽小游戏_手把手教你开发游戏_超详细保姆级教程_Java编程_Java游戏开发-Java基础-Java练手项目】https://www.bilibili.com/video/BV1DZ4y1Y73M?p=2&vd_source=70e680aaeedc45cb797fd52fdd25367cicon-default.png?t=N6B9http://【【Java项目】不到两小时用Java做出超级玛丽小游戏_手把手教你开发游戏_超详细保姆级教程_Java编程_Java游戏开发-Java基础-Java练手项目】https://www.bilibili.com/video/BV1DZ4y1Y73M?p=2&vd_source=70e680aaeedc45cb797fd52fdd25367c

相关文章:

Java超级玛丽小游戏制作过程讲解 第一天 创建窗口

package com.sxt;import javax.swing.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener;public class MyFrame extends JFrame implements KeyListener {//设置窗口的大小为800*600public MyFrame() {this.setSize(800, 600);//设置窗口中显示this.setLo…...

【POP3/IMAP/SMTP】QQ邮箱设置

什么是 POP3/IMAP/SMTP 服务 POP3 (Post Office Protocol - Version 3)协议用于支持使用电子邮件客户端获取并删除在服务器上的电子邮件。 IMAP (Internet Message Access Protocol)协议用于支持使用电子邮件客户端交互式存取服务…...

云计算——常见集群策略

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​ 目录 前言 一.什么是集群 二.集群策略 1.虚拟机HA 实现虚拟机高可用性通常涉及以下关键…...

c语言locale.h简介

<locale.h>提供的函数用于控制c标准库中对于不同的地区行为不一样的部分。&#xff08;地区通常是国家或者某种特定语言的地理区域&#xff09; 一、locale.h简单介绍 在标准库里&#xff0c;依赖地区的部分通常包括以下几项&#xff1a; 数字量的格式 货币的格式 字符…...

C++运算符重载详解(赋值、流插入流提取、前置后置++、取地址)

C运算符重载详解 基本介绍运算符重载案列1. 赋值运算符重载2. 前置和后置重载3. cout&#xff0c;cin(流插入&#xff0c;流提取重载)4. 取地址重载 基本介绍 C为了增强代码的可读性引入了运算符重载&#xff0c;运算符重载是具有特殊函数名的函数&#xff0c;也具有其 返回值…...

sql的count函数优化

sql的count(1)函数会执行遍历表统计符合条件的数目&#xff0c;下面有两个sql 第一条&#xff1a; select count(1) from membership_call_detail_statistics a where a.repository_id f2a4ed6b3e074e33bd99998c1def26f8 and a.statistics_date between 2023-04-01 00:00:0…...

Ai创作系统ChatGPT源码搭建教程+附源码

系统使用Nestjs和Vue3框架技术&#xff0c;持续集成AI能力到本系统&#xff01; 更新内容&#xff1a; 同步官方图片重新生成指令 同步官方 Vary 指令 单张图片对比加强 Vary(Strong) | Vary(Subtle) 同步官方 Zoom 指令 单张图片无限缩放 Zoom out 2x | Zoom out 1.5x 新增GP…...

力扣 416. 分割等和子集

题目来源&#xff1a;https://leetcode.cn/problems/partition-equal-subset-sum/description/ C题解&#xff08;思路来源代码随想录&#xff09; &#xff1a; 背包问题有多种背包方式&#xff0c;常见的有&#xff1a;01背包、完全背包、多重背包、分组背包和混合背包等等。…...

sqlyog导出mysql数据字典

1.打开sqlyog执行sql获取字典数据 SELECTt.COLUMN_NAME AS 字段名,t.COLUMN_TYPE AS 数据类型,CASE IFNULL(t.COLUMN_DEFAULT,Null) WHEN THEN 空字符串 WHEN Null THEN NULL ELSE t.COLUMN_DEFAULT END AS 默认值,CASE t.IS_NULLABLE WHEN YES THEN 是 ELSE 否 END AS 是否…...

【C++】多态的实现及其底层原理

个人主页&#xff1a;&#x1f35d;在肯德基吃麻辣烫 我的gitee&#xff1a;gitee仓库 分享一句喜欢的话&#xff1a;热烈的火焰&#xff0c;冰封在最沉默的火山深处。 文章目录 前言一、什么是多态&#xff1f;二、多态的构成条件2.1什么是虚函数&#xff1f;2.2虚函数的重写2…...

【网络编程】TCP带外数据总结

文章目录 一、带外数据基本知识二、带外数据的读写三、检测带外数据是否到达3.1、select上的异常事件3.2、SIGURG信号 四、带外标记 一、带外数据基本知识 带外数据&#xff08;Out Of Band&#xff0c;OOB&#xff09;&#xff0c;用于迅速通告对方本端发生的重要事件&#xf…...

高薪程序员面试题精讲系列133之微服务里的网关有哪些实现方案?你熟悉Gateway网关吗?

一. 面试题及剖析 1. 今日面试题 微服务里的网关有哪些实现方案? Gateway网关是怎么实现的? 你用过Gateway网关吗? Gateway里有哪些路由规则? 2. 题目剖析 在上一篇文章中,壹哥给大家梳理了微服务里的远程调用、熔断等相关的面试题。今天这篇文章,壹哥会重点给大家梳理…...

计算机网络(4) --- 协议定制

计算机网络&#xff08;3&#xff09; --- 网络套接字TCP_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/132035757?spm1001.2014.3001.5501 目录 1. 协议的基础知识 TCP协议通讯流程 ​编辑 2.协议 1.介绍 2.手写协议 1.内容 2.接口 …...

【Mybatis】Mybatis架构简介

文章目录 1.整体架构图2. 基础支撑层2.1 类型转换模块2.2 日志模块2.3 反射工具模块2.4 Binding 模块2.5 数据源模块2.6缓存模块2.7 解析器模块2.8 事务管理模块 3. 核心处理层3.1 配置解析3.2 SQL 解析与 scripting 模块3.3 SQL 执行3.4 插件 4. 接口层 1.整体架构图 MyBatis…...

如何使用大模型处理生活繁琐的工作

如果每封电子邮件、每个带有订单、发票、投诉、录用请求或工作申请的 PDF 都可以翻译成机器可读的数据&#xff0c;会怎样&#xff1f;然后可以由 ERP / CRM / LMS / TMS 自动处理吗&#xff1f;无需编程特殊接口。 听起来很神奇&#xff1f;它确实有一些魔力。但最近已成为可…...

RpcController作用浅析

RpcController作用浅析 前面提到了RpcConsumer的实现思路&#xff0c;但是并没说明RpcController有什么作用&#xff0c;不妨看看google::protobuf::RpcController&#xff1a; class PROTOBUF_EXPORT RpcController {public:inline RpcController() {}virtual ~RpcControlle…...

Linux(三):Linux服务器下日常实操命令 (常年更新)

基础命令 cd命令&#xff1a;切换目录 cd &#xff1a;切换当前目录百至其它目录&#xff0c;比如进入/etc目录&#xff0c;则执行 cd /etccd / &#xff1a;在Linux 系统中斜杠“/”表示的是根目录。cd / ,即进入根目录.cd ~&#xff1a;进入用户在该系统的home目录&#…...

强大的截图软件--Snipaste

这里写目录标题 前言Snipaste贴图并置顶标注功能 下载 前言 在工作中&#xff0c;我们经常需要保存当前屏幕的图片&#xff0c;虽然系统总是会自带一些截图工具&#xff0c;但似乎用起来总是不那个顺手&#xff0c;例如我们需要对图片进行一些标注&#xff0c;或者将图片贴在屏…...

LeetCode·每日一题·722. 删除注释·模拟

题目 示例 思路 题意 -> 给定一段代码&#xff0c;将代码中的注释删除并返回。 由于注释只有两种类型&#xff1a; 字符串// 表示行注释&#xff0c;表示//和其右侧的其余字符应该被忽略。字符串/* 表示一个块注释&#xff0c;它表示直到下一个&#xff08;非重叠&#x…...

npm更新和管理已发布的包

目录 1、更改包的可见性 1.1 将公共包设为私有 ​编辑 使用网站 使用命令行 1.2 将私有包公开 使用网站 使用命令行 2、将协作者添加到用户帐户拥有的私有包 2.1 授予对Web上私有用户包的访问权限 2.2 从命令行界面授予私有包访问权限 2.3 授予对私有组织包的访问权限…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

leetcode_69.x的平方根

题目如下 &#xff1a; 看到题 &#xff0c;我们最原始的想法就是暴力解决: for(long long i 0;i<INT_MAX;i){if(i*ix){return i;}else if((i*i>x)&&((i-1)*(i-1)<x)){return i-1;}}我们直接开始遍历&#xff0c;我们是整数的平方根&#xff0c;所以我们分两…...

EasyRTC音视频实时通话功能在WebRTC与智能硬件整合中的应用与优势

一、WebRTC与智能硬件整合趋势​ 随着物联网和实时通信需求的爆发式增长&#xff0c;WebRTC作为开源实时通信技术&#xff0c;为浏览器与移动应用提供免插件的音视频通信能力&#xff0c;在智能硬件领域的融合应用已成必然趋势。智能硬件不再局限于单一功能&#xff0c;对实时…...

验证redis数据结构

一、功能验证 1.验证redis的数据结构&#xff08;如字符串、列表、哈希、集合、有序集合等&#xff09;是否按照预期工作。 2、常见的数据结构验证方法&#xff1a; ①字符串&#xff08;string&#xff09; 测试基本操作 set、get、incr、decr 验证字符串的长度和内容是否正…...