当前位置: 首页 > 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 授予对私有组织包的访问权限…...

什么年代了怎么还在用bash啊?现代化shell开箱体验: fish, nu, elvish口

整体排查思路 我们的目标是验证以下三个环节是否正常&#xff1a; 登录成功时&#xff1a;服务器是否正确生成了Session并返回了包含正确 JSESSIONID的Cookie给浏览器。 浏览器端&#xff1a;浏览器是否成功接收并存储了该Cookie。 后续请求&#xff1a;浏览器在执行查询等操作…...

模拟型对讲系统市场洞察:2026-2032年复合增长率(CAGR)为3.9%

在智慧社区与智能家居快速渗透的背景下&#xff0c;全球模拟型对讲系统市场正经历从主流产品向基础安防设备的定位转变。据恒州诚思最新调研数据显示&#xff0c;2025年全球模拟型对讲系统市场规模达115.4亿元&#xff0c;预计2032年将增至153.0亿元&#xff0c;2026-2032年复合…...

Proteus仿真必备:MPU6050模型下载与使用全攻略(含componentsearchengine.com注册技巧)

Proteus仿真进阶&#xff1a;MPU6050模型深度应用与实战技巧 在嵌入式系统开发中&#xff0c;仿真环节往往能节省大量硬件调试时间。Proteus作为业界广泛使用的电路仿真软件&#xff0c;其模型库的丰富程度直接决定了仿真效率。MPU6050这款集成了三轴陀螺仪和三轴加速度计的传感…...

FastRGB嵌入式LED库:AVR平台纳秒级RGB控制框架

1. FastRGB库深度解析&#xff1a;面向嵌入式系统的高性能可寻址RGB LED控制框架FastRGB是一个专为资源受限嵌入式平台设计的现代、面向对象、轻量级可寻址RGB LED控制库。其核心目标并非追求通用性&#xff0c;而是针对特定MCU架构&#xff08;尤其是8位AVR平台&#xff09;进…...

SpringBoot与Flowable Modeler的无缝集成:跳过安全认证的实战指南

1. 为什么需要跳过Flowable Modeler的安全认证 第一次接触Flowable Modeler的设计师们可能都有过这样的体验&#xff1a;明明只是想快速画个流程图&#xff0c;却不得不先折腾用户认证系统。这就像你想进自家厨房倒杯水&#xff0c;却要先通过指纹识别人脸验证密码输入三重关卡…...

收藏 | 新手程序员必看:大厂AI Agent开发学习路线图

本文深入分析了大厂AI Agent开发岗位的核心要求&#xff0c;包括扎实的后端基础、AI知识储备、主流框架掌握等。文章强调AI Agent开发与后端开发相辅相成&#xff0c;并非对立关系&#xff0c;并提供了详细的学习路线图&#xff0c;涵盖基础阶段、AI知识入门、实践项目及深化拓…...

收藏!小白程序员快速入门大模型:什么是AI Agent?

本文用简洁语言定义AI Agent为“有目标、会思考、能自己调用工具干活”的AI&#xff0c;以Deepseek和ChatGPT为例。文章详细介绍了Agent的核心能力&#xff08;记忆、自主规划、行动/工具调用&#xff09;及类型&#xff08;编程、个人助理、内容生成等&#xff09;。重点解析了…...

【2026奇点技术白皮书首发】:全球仅23家通过AI原生研发成熟度三级认证企业的共性实践

第一章&#xff1a;AI原生软件研发&#xff1a;2026奇点智能技术大会核心议题 2026奇点智能技术大会(https://ml-summit.org) AI原生软件研发已超越传统“AI赋能”范式&#xff0c;进入以大模型为运行时、以提示与推理链为基本构件、以LLM-as-OS为架构基底的新纪元。2026奇点智…...

Rebus扩展开发指南:如何编写自定义传输、序列化和中间件

Rebus扩展开发指南&#xff1a;如何编写自定义传输、序列化和中间件 【免费下载链接】Rebus :bus: Simple and lean service bus implementation for .NET 项目地址: https://gitcode.com/gh_mirrors/re/Rebus Rebus是一个为.NET平台设计的轻量级服务总线实现&#xff0…...

数据摄取构建模块简介(预览版)(二)僬

Qt是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本笔记将重点介绍QSpinBox数值微调组件的常用方法及灵活应用。…...