Java实现俄罗斯方块-初始化游戏界面的JPanel

news2024/10/23 2:47:56

目录

技术实现:

2.初始化游戏界面; 

2.1 什么是游戏界面

2.2 JPanel面板

 2.3 流布局管理器【FlowLayout】

2.4 网络布局管理器 【GridLayout】

2.5 边界布局管理器 


技术实现:


1.初始化游戏窗口;

2.初始化游戏界面;

3.初始化游戏的说明面板;

4.随机生成下落方块;

5.绘制方块;

6.清除方块;

7.清楚某一行方块,上方方块掉落;

8.刷新清除某一行方块后的界面;

9.键盘控制下落方块的移动方向,形状;

10.判断方块能否下落;

11.实现方块下落速度的变化;

12.游戏的暂停;

2.初始化游戏界面; 

2.1 什么是游戏界面

        通俗的说就是你进入一款游戏,在屏幕上看到的都属于游戏界面;

 

2.2 JPanel面板

        JPanel也是一个容器类(非顶层容器),主要用于界面布局;

        一个界面只能有一个JFrame,但可以有多个JPanel,在JPanel的基础上还可以增加其他组件;

另外,多个JPanel相互独立,互不影响;

 

 温馨提示:

         在早期的 Java 版本中,getContentPane() 方法是必要的步骤,因为 Swing 组件不能直接添加到 JFrame 上。但随着 Java SE 5.0 的发布,可以直接在 JFrame 上使用 add() 方法添加组件,使得 getContentPane() 方法的使用变得可选,但仍然推荐使用该方法以确保最佳实践

        在使用 JFrame 创建窗口时,一般不要直接将组件添加到 JFrame 上,应该用 getContentPane() 方法获取内容面板对象后,再对其进行适当的操作;

  //将按钮,文本域等组件添加到面板上
        jpanel.add(jb);
        jpanel.add(jl);
        //使用getContentPane()获取内容面板;
        jframe.getContentPane().add(jpanel);

 2.3 流布局管理器【FlowLayout】

        这是最基本的布局方式;

class csdn {
    public void test() {
        //创建窗体
        JFrame frame=new JFrame("这是窗体的名字");
        //建个按钮
        JButton button=new JButton("登录");
        //建个Lable标签
        JLabel lable=new JLabel("这是一个JFrame窗口");
        //设置窗体可见
        frame.setVisible(true);
        frame.setBounds(0,0,600,900);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        //frame.pack();//不固定窗口大小
        frame.setResizable(false);//固定窗口大小

        //来个面板
        JPanel panel=new JPanel();	
        panel.add(lable);		//面板里添加Lable
        panel.add(button);		//面板里添加按钮

     	//将窗体转换为容器再添加上面板
        frame.getContentPane().add(panel);
        frame.setLayout(new FlowLayout(1));//调用流布局,设为0时,每一行的组件将被指定按照左对齐排列
        //1是中间布局,2是右对齐排列
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        csdn c= new csdn();
        c.test();
    }
}

         

 

2.4 网络布局管理器 【GridLayout】

        1.该布局中每个组件大小相同;

        2.组件按照从左到右,从上到下的的顺序排列;

        3.改变窗体大小,组件大小也会随之改变;

class Demo2{
    public static void main(String [] args){
        JFrame jframe=new JFrame("神秘无敌宇宙力量");
        jframe.setVisible(true);
        jframe.setBounds(0,0,600,900);
        jframe.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        //jframe.setResizable(false);
        //jframe.pack();

        //创建按钮
        JButton jbutton1=new JButton("青龙");
        JButton jbutton2=new JButton("白虎");
        JButton jbutton3=new JButton("朱雀");
        JButton jbutton4=new JButton("玄武");
        
        //直接添加到界面上
        jframe.add(jbutton1);
        jframe.add(jbutton2);
        jframe.add(jbutton3);
        jframe.add(jbutton4);
        //分布式管理器
        jframe.setLayout(new GridLayout(3,2,10,10));
    }
}

 

2.5 边界布局管理器 

         1.不指定布局管理器时,Swing使用的就是边界布局管理器;

          2.窗体被划分为东,西,南,北,中五个区域;

class Demo4{
    public static void main(String[] args) {
        JFrame jframe=new JFrame("欢迎入坑");
        jframe.setBounds(0,0,600,900);
        jframe.setVisible(true);
        jframe.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        //创建按钮
        JButton button1=new JButton("AA");
        JButton button2=new JButton("BB");
        JButton button3=new JButton("CC");
        JButton button4=new JButton("DD");
        JButton button5=new JButton("EE");
        //边界布局管理
        jframe.add(button1,BorderLayout.EAST);
        jframe.add(button2,BorderLayout.CENTER);
        jframe.add(button3,BorderLayout.WEST);
        jframe.add(button4,BorderLayout.NORTH);
        jframe.add(button5,BorderLayout.SOUTH);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1844399.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决navicat连接oracle19c数据库缺少oci.dll

下载oci.dll文件 搜索Oracle Instant Client Downloads Oracle Instant Client Downloads点击 Oracle Instant Client Downloads 超链接 根据自己的操作系统按需选择 以windows64位为例,下载 Version 19.23.0.0.0的OCI压缩包 解压到Navicat的安装根路径下&#xff…

基于SpringBoot校园食堂订餐管理系统

文章目录 系统运行图概要整体架构流程技术名词解释 系统运行图 概要 随着校园人口的增加和生活节奏的加快,校园食堂的订餐管理面临着诸多挑战,传统的人工点餐方式已经不能满足日益增长的需求和期望。因此,本论文旨在设计和实现一种基于Java的…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十四)

课程地址: 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程,一套精通鸿蒙应用开发 (本篇笔记对应课程第 22 节) P22《21.ArkUI-实现摇杆功能》 本节我们将小鱼动画案例中的按钮控制改为摇杆控制,用来熟悉和巩固…

面向AI时代的软件开发新范式

作为一名软件开发者,有幸站在了AI时代的风口浪尖。在这篇博客中,我将分享我的个人看法,一起走向AI时代软件开发新范式。 首先,我们要明确软件开发活动产生的各种制品,都是人类知识的载体,也是人类文明的高级…

校园疫情防控健康打卡系统

摘 要 自疫情出现以来,全世界人民的生命安全和健康都面临着严重威胁。高校是我国培养人才的重要基地,其安全和稳定影响着社会的发展和进步。因此,各高校高度重视疫情防控工作,并在校园疫情防控中引入了健康打卡系统。本论文主要研…

Cookie-SameSite属性 前端请求不带cookie的问题解决方案

最近遇到了前端请求后端不带cookie的问题, 请求时header里面就是没有cookie 查看响应应该是这个问题 SameSite是一个cookie属性,用于控制浏览器是否在跨站点请求中发送cookie。它有三个可能的值: 1. Strict(严格模式&#xff09…

如何使用pwclient从社区邮件列表获取相关补丁

最近在调试Qualcomm的QCA2066 WiFi 6E平台,主控处理器信息如下所示: 6nm AMD APU CPU:Zen 2 4c/8t、2.4-3.5GHz(最高可达 448GFlops FP32) GPU:8 RDNA 2 CUs、1.6GHz(1.6 TFlops FP32&#xff0…

Tomcat配置详解

文章目录 一、配置文件介绍配置文件日志文件 二、组件组件分层和分类核心组件Tomcat处理请求过程URL对应关系 三、部署java程序手动部署搭建博客状态页 四、常见配置详解tomcat端口号安全配置管理虚拟主机配置Context配置 四、Tomcat Nginx动静分离 一、配置文件介绍 配置好环…

代码讲解——ssm+jsp+maven项目目录结构说明

1 applicationContext.xml 应用上下文配置 2 db.properties 数据库配置 3 log4j.properties日志配置 4 mybatis-config.xml mybatis配置 5 springmvc.xml springmvc配置

【ai】tx2-nx:安装深度学习环境及4.6对应pytorch

参考:https://www.waveshare.net/wiki/Jetson_TX2_NX#AI.E5.85.A5.E9.97.A8 英伟达2021年发布的的tritionserver 2.17 版本中,backend 有tensorflow1 和 onnxruntime ,他们都是做什么用的,作为backend 对于 triton 推理server意义是什么,是否应该有pytorch? Triton Infer…

新版二开微信发卡小程序源码卡密系统/支持流量主

新版二开微信发卡小程序源码卡密系统支持流量主。裂变扩展多种领取模式二次开发的发卡小程序源码,其后台采用PHP编写,支持用户通过付费购卡或者观看视频广告领取卡密。 该小程序还支持流量主,因为功能需要,就进行了二开&#xff…

LeetCode 热题100 --哈希

哈希 哈希,有限空间映射一个无限的空间。在空间内,有序化进行快速查询。 用空间换时间。 1.两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组…

如何使用ChatGPT辅助设计工作

文章目录 设计师如何使用ChatGPT提升工作效率?25个案例告诉你!什么是 prompt?咨询信息型 prompt vs 执行任务 prompt编写出色 prompt 的基本思路撰写 prompt 的案例和技巧1、将 ChatGPT 视作专业人士2、使用 ChatGPT 创建表单3、使用 ChatGPT…

论文学习 Learning Robust Representations via Multi-View Information Bottleneck

Code available at https://github.com/mfederici/Multi-View-Information-Bottleneck 摘要:信息瓶颈原理为表示学习提供了一种信息论方法,通过训练编码器保留与预测标签相关的所有信息,同时最小化表示中其他多余信息的数量。然而&#xff0…

驶向未来,智慧加油新体验——我们的加油App开发之旅

一、引言 在数字化与智能化交织的时代,每一次出行都呼唤着更加高效、便捷的服务。为了满足广大车主对加油服务的更高需求,我们倾力打造了一款创新的加油App,旨在为您的驾驶生活带来前所未有的智慧新体验。 二、洞察需求,创新服务…

torch.optim 之 Algorithms (Implementation: for-loop, foreach, fused)

torch.optim的官方文档 官方文档中文版 一、Implementation torch.optim的官方文档在介绍一些optimizer Algorithms时提及它们的implementation共有如下三个类别:for-loop, foreach (multi-tensor), and fused。 Chat-GPT对这三个implementation的解释是&#xf…

光伏设计需要设计哪些方面?

光伏设计是一项复杂而关键的工作,它涉及到多个方面的综合考虑,以确保光伏系统的效率、安全性和可持续性。下面将详细探讨光伏设计需要设计的几个方面。 一、系统规模与布局 光伏设计的首要任务是确定系统的规模和布局。这包括评估安装地点的光照资源、可…

工业智能网关如何与设备连接?天拓四方

随着工业4.0时代的来临,智能化、自动化已成为工业生产的标配。在这样的背景下,工业智能网关应运而生,成为连接工业设备、实现数据交互与管理的关键节点。本文将阐述工业智能网关如何与设备连接,旨在为读者提供一套清晰、实用的解决…

实现Hexo新建博文时自带随机默认封面

文章目录 1. Hexo模版2. 准备封面和缩略图3. 新建博文脚本windowsLinux 4. 效果展示 前提是选择的主题在Front-matter中支持cover和thumbnail,主题之间对于这两个属性的定义可能并不用,如果不适用,只需要根据逻辑修改脚本即可。 1. Hexo模版…

python爬虫之selenium自动化操作

python爬虫之selenium自动化操作 需求:操作淘宝去掉弹窗广告搜索物品后进入百度回退又前进 selenium模块的基本使用 问题:selenium模块和爬虫之间具有怎样的关联? 1、便捷的获取网站中动态加载的数据 2、便捷实现模拟登录 什么是selenium模块&#x…