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

目录

技术实现:

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);
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docker的基本操作 及 容器与外部机互相通讯(持续更新中)

Docker入门: Docker 入门教程 - 阮一峰的网络日志 (ruanyifeng.com)docker入门,这一篇就够了。-CSDN博客Docker 容器使用 | 菜鸟教程 (runoob.com)Docker自定义网络和运行时指定IP_docker run ip-CSDN博客 基本命令 链接:docker入门&#…

Java面向对象-final关键字

Java面向对象-final关键字 一、final1、修饰变量2、修饰方法3、修饰类4、案例 一、final 可以修饰变量、方法、类 1、修饰变量 final修饰一个变量,变量的值不可以改变,这个变量就变成一个字符常量,约定俗称的规定:名字大写。 f…

【高端精品】最新手机版微信小程序(拼多多+京东)全自动操作项目

现代互联网经济的发展带来了新型的盈利方式,通过微信小程序的拼多多和京东进行商品自动巡视,为商家带来增的流量,同时为使用者带来利润。这种盈利方式无需复杂操作,用户仅需启动相应程序,商品信息便会被系统自动收集。…

DVWA - Brute Force

DVWA - Brute Force 等级:low ​ 直接上bp弱口令爆破,设置变量,攻击类型最后一个,payload为用户名、密码简单列表 ​ 直接run,长度排序下,不一样的就是正确的用户名和密码 ​ 另解: 看一下…

ElementPlus非表单组件ElUpload值更新后校验不消失问题

项目场景: el-form表单中有一个上传组件,有必填校验。 问题描述 先触发表单的必填校验(点击提交按钮),然后再上传文件,必填校验的提示一直存在,如果再次点击提交,手动触发表单校验,必填校验消…

Oracle数据库Day03-单行函数

1. 单行函数 处理数据项接受函数并返回一个值对返回的每一行采取行动每行返回一个结果可能会修改数据类型可以嵌套接受可以是列或表达式的参数 function_name[(arg1, arg2,…)]

Retrofit 注解参数详解

添加依赖 implementation com.squareup.retrofit2:retrofit:2.9.0 implementation com.squareup.retrofit2:converter-gson:2.9.0 初始化Retrofit val retrofit Retrofit.Builder().baseUrl("http://api.github.com/").addConverterFactory(GsonConverterFactory…

设计模式之工厂方法模式(Factory Method Pattern)

目录 1.1、前言1.2、工厂方法模式简介1.2.1、工厂方法模式的主要特点1.2.2、工厂方法模式的主要结构1.2.3、使用工厂方法模式的好处 1.3、SpringBoot中那些场景使用了工厂方法模式1.4、日常工作中那些业务场景可以使用工厂方法模式1.5、工厂方法模式实战(以某商场一…

【数据结构与算法】绪论、线性表 QA

以Niklus Wirth的观点,程序等于什么? 程序等于算法加数据结构。公式:“程序 算法 数据结构”。 算法的重要特性。 有穷性:算法必须能在有限的步骤之后结束。确定性:算法的每一步骤必须明确,没有二义性。可行性&a…

讲解 Faster R_CNN原理:

Fast R-CNN改进 上图为论文中的图片 先使用CNN网络获得整体的特征图:这里可以卷积共享,加快速度 然后将原图中的Region Proposals(区域)映射到Feature Map中,获得一系 列RoI(感兴趣区域) 然后不再对每个RoI分别进行分类回归,而是通…

sqlite3模块的使用

1. SQLite数据库 SQLite是一个轻量级的, 基于磁盘的, 关系型的数据库管理系统(RDBMS). 它不需要一个独立的服务器进程或操作系统级别的配置. SQLite是D.Richard Hipp在2000年创建的, 并且由于其小巧, 快速, 可靠和易于使用的特性, 它在全球范围内得到了广泛的应用.以下是 SQLi…

项目干系人管理

目录 1.概述 2.四个子过程 2.1. 识别干系人(Identify Stakeholders) 2.2. 规划干系人参与(Plan Stakeholder Engagement) 2.3. 管理干系人参与(Manage Stakeholder Engagement) 2.4. 监督干系人参与&…

Dell戴尔灵越Inspiron 16 Plus 7640/7630笔记本电脑原装Windows11下载,恢复出厂开箱状态预装OEM系统

灵越16P-7630系统包: 链接:https://pan.baidu.com/s/1Rve5_PF1VO8kAKnAQwP22g?pwdjyqq 提取码:jyqq 灵越16P-7640系统包: 链接:https://pan.baidu.com/s/1B8LeIEKM8IF1xbpMVjy3qg?pwdy9qj 提取码:y9qj 戴尔原装WIN11系…

【stm32单片机应用】基于I2C协议的OLED显示(利用U82G库)

一、U8g2库 (一)U8g2简介 U8g2 是一个用于单色和彩色显示的嵌入式图形库,特别适用于单色OLED、LCD显示屏的驱动。它是对早期U8g库的扩展和改进,提供了更多功能和更广泛的硬件支持。U8g2作为一款强大而灵活的嵌入式图形库&#x…

HTML和CSS基础(一)

前言 HTML(HyperText Markup Language)是一种用于创建网页的标准标记语言。它由各种标签组成,这些标签定义了网页的结构和内容。HTML的早期形式诞生于1989年,由CERN的物理学家Tim Berners-Lee发明,最初用于在科学家之…

springCloudAlibaba之分布式网关组件---gateway

gateway-网关 网关spring cloud gatewaygateway初体验gateway整合nacos简写方式 网关 在微服务架构中一个系统会被拆分成多个微服务。那么作为客户端(前端)要如何去调用这么多的微服务?如果没有网关的存在,我们只能在客户端记录每个微服务的地址&#xf…

探索AI绘画工具的前沿:创新科技与艺术的无缝融合

在科技和艺术交织的时代,AI绘画工具以其独特的魅力引领着创作的新潮流。本文将带您深入了解AI绘画工具的前沿技术,并通过最新例子展示其实际应用和潜力。 AI绘画工具概述 AI绘画工具通过集成深度学习、自然语言处理等技术,实现了从文字描述…

【新课程】PICO VR 交互开发指南

从PICO开始,迈向XR跨平台开发 Unity XR Interaction Toolkit (简称XRI)是一套跨平台的 XR 交互开发工具包,随着版本的更新与完善,逐渐获得了开发者的青睐。各 XR 平台逐步推荐开发者采用 XRI 作为首选的交互开发工具为…

软件方案评审与模块优化:从FOC模块出发的电控平台建设

一、背景 洞悉模块发展趋势,定制行业应用特点,明确优化方向与阶段性目标 随着科技进步的飞速发展,模块化设计已成为众多行业产品开发的核心理念。无论是软件系统、硬件组件,还是复杂系统中的功能模块,都需要对其发展…

部署LVS—DR群集

1、LVS-DR工作流向分析 (1)客户端发送请求到 Director Server(负载均衡器),请求的数据报文(源 IP 是 CIP,目标 IP 是 VIP)到达内核空间。 (2)Director Server 和 Real Se…