3、组件和容器

3、组件和容器

  1. Frame

    1. 万物皆对象,窗口也是一个对象,这里Frame也是一个对象,我们可以看到Frame是可以new出来的,它是属于java.awt包下的

    2. 学习中想要知道这个类怎么用可以采用查JDK帮助文档,这里推荐查看源码,在IDEA中按住Ctrl键,点击类名即可查看源码

    3. 通过Structure选项卡可以查看类的结构打开方式如图,也可以使用快捷键alt+7

      结构

      public class Frame extends Window implements MenuContainer
      

      从类的定义可以看出,Frame类继承了Window类,实现了MemuContainer接口

      从类中我们可以看出Frame类构造器共有4个,我们可以看出无参构造方法

       public Frame() throws HeadlessException {this("");}
      

      无参构造方法中this(“”)调用了类中的有参构造方法Fram(String),有参构造方法如下

        public Frame(String title) throws HeadlessException {init(title, null);}
      

      有参构造方法又调用了类中的init方法

          private void init(String title, GraphicsConfiguration gc) {this.title = title;SunToolkit.checkAndSetPolicy(this);}
      
  2. 第一个Frame窗口

    package com.dryant.lesson1;                                                               import java.awt.*;                                                                        //GUI的第一个界面                                                                               
    public class TestFrame {                                                                  public static void main(String[] args) {                                              //万物接对象,窗口也是一个对象,这个对象就是Frame对象                                                    //学习中想要知道这个类怎么用可以采用查JDK帮助文档,这里推荐查看源码                                              Frame frame = new Frame("第一个Java图形界面窗口");//使用快捷键Ctrl+Alt+V快速插入对象                  //当前的这个代码在Java中是看不到的,窗口是在内存中的,想要显现出来就必须设置可见性                                      //设置可见性,通过  对象.方法 可以看到该对象可以调用那些方法                                                 frame.setVisible(true);                                                           //设置窗口大小                                                                          frame.setSize(400,400);                                                           //设置窗口背景颜色                                                                        frame.setBackground(new Color(179, 152, 152));                                    //设置弹出初始位置                                                                        frame.setLocation(200,200);                                                       //设置窗口大小不能拉伸,大小固定,一些游戏需要                                                          frame.setResizable(false);                                                        }                                                                                     
    }                                                                                         
    

    运行结果如下图

    结果

  3. 多个弹窗

    当一个弹窗的时候可以用上面的方法生成,如果多个弹窗的话每个都要写这样的代码显然太麻烦,这时我们就可以用到封装的办法

    封装的方法就是把上面方法体抽出来作为一个方法,参数是frame就可以了

    展示多个窗口,对于Java来说就是new多个对象即可,代码如下

    package com.dryant.lesson1;import java.awt.*;public class TestFrame2 {public static void main(String[] args) {//展示多个窗口,对于Java来说就是new多个对象即可//此时就要考虑怎样做一个类与Frame有关系,可以使用继承的方法//在建好类之后就可以new出对象即可MyFrame myFrame1 = new MyFrame(100, 100, 200, 200, Color.blue);MyFrame myFrame2 = new MyFrame(300, 100, 200, 200, Color.yellow);MyFrame myFrame3 = new MyFrame(100, 300, 200, 200, Color.red);MyFrame myFrame4 = new MyFrame(300, 300, 200, 200, Color.green);}
    }
    class MyFrame extends Frame {//因为要展示多个窗口就需要计数器static int id = 0;//1、写构造器,因为需要实例化写一个与类同名、无返回值的方法就是构造器//2、考虑构造器需要的变量,宽、高、初始位置、颜色public MyFrame(int x,int y,int w,int h,Color color){super("Myframe+"+(++id));//调用父类的构造方法setVisible(true);//设置可见性,这个代码与super.setVisible效果一样setBounds(x,y,w,h);//设置初始位置及窗口大小setBackground(color);//设置背景颜色}}
    

    运行结果如图所示

    结果

    这里我们同样学习了类的封装

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决 MyBatis-Plus 中增加修改时,对应时间的更新问题

问题:在添加修改时,对应的 create_time 与 insert_time 不会随着添加修改而自动的更新时间 第一步:首先在对应的属性上,加上以下注解 如果只添加以下注解,在增加或者修改时,可能对应的 LocalDateTime 会出…

Unity中Shader需要了解的点与向量

文章目录 前言一、点和向量的区别二、向量加法减法1、向量加法2、向量减法(可以把向量减法转化为向量加法) 三、向量的模四、标量![在这里插入图片描述](https://img-blog.csdnimg.cn/03df81df3cdf47989a11605d5f5e7da5.png)1、向量与标量的乘法 前言 Unity中Shader了解使用的…

使用Python做一个微信机器人

介绍 简介 该程序将微信的内部功能提取出来,然后在程序里加载Python,接着将这些功能导出成库函数,就可以在Python里使用这些函数 程序启动的时候会执行py_code目录下的main.py,类似于你在命令行使用python main.py。 现在会以…

windows11系统没有系统散热方式的解决办法

一、问题描述 当我们查看Win11系统的(同时按下键盘的WinR键即可打开运行窗口)【控制面板】-->【硬件和声音】-->【电源选项】-->【更改计划设置】-->【 更改高级电源设置】-->【处理器电源管理】下没有系统散热方式的选项,如下…

【C语言】【结构体的内存对齐】计算结构体内存大小,有图解

计算结构体内存大小&#xff0c;需要用到结构体内存对齐的知识 来段代码看看什么是结构体对齐&#xff1a; #include<stdio.h> struct S1 {char a;char b;int num; }; struct S2 {char a;int num;char b; }; int main() {printf("%zd\n", sizeof(struct S1))…

Armv9 Cortex-A720的L2 memory system 和 L2 Cache

9 L2 memory system Cortex-A720核心的L2内存系统通过CPU bridge连接core与DynamIQ Shared Unit-120,其中包括私有的L2缓存。 L2缓存是统一的,每个Cortex-A720核心在一个集群中都有私有的L2缓存。 L2内存系统包括使用虚拟地址(VA)和程序计数器(PC)的数据预取引擎。不同…

SpringCloud nacos1.x.x版本升级到2.2.3版本并开启鉴权踩坑

近期由于服务器漏洞扫描&#xff0c;检测出nacos存在绕过登录鉴权漏洞&#xff0c;如图 需要进行升级并开启鉴权&#xff0c;就此次升级做下记录。 1.首先备份原来的nacos&#xff0c;导出配置文件作为备份&#xff1b; 2&#xff0c;从官网下载nacos-server-2.2.3.zip&#x…

rk3568环境配置和推理报错: RKNN_ERR_MALLOC_FAIL

前言 最近在部署算法在板子侧遇到的一些问题汇总一下&#xff1a; 一、版本问题 经过测试现在将自己环境配置如下&#xff1a; 本地linux安装rknn-toolkit2-1.5.0 本地Linux使用的miniconda新建的一个python虚拟环境&#xff08;自行网上查找相关方法&#xff09; 安装好自…

Android导航抽屉

本文所有代码均位于https://github.com/MADMAX110/CatChat 之前使用过标签页布局可以让用户在应用中轻松地导航。 当只有为数不多地几个类别屏幕&#xff0c;而且它们都在应用层次结构地同一级上&#xff0c;标签页布局就很适用。 而抽屉导航可以实现更多选择&#xff0c;这是一…

python(自4) xpath下载 lxml安装 lxml语法 使用方式

&#xff08;一&#xff09;安装 搜索xpath 讲解 XPath 教程 (w3school.com.cn) 一&#xff0c;下载地址 &#xff1a; https://chrome.zzzmh.cn/info/hgimnogjllphhhkhlmebbmlgjoejdpjl 二 &#xff0c;拖拽 &#xff08;二&#xff09;lxml安装 cmd 打开终端 cd pythond…

JAVA中使用CompletableFuture进行异步编程

JAVA中使用CompletableFuture进行异步编程 1、什么是CompletableFuture CompletableFuture 是 JDK8 提供的 Future 增强类&#xff0c;CompletableFuture 异步任务执行线程池&#xff0c;默认是把异步任 务都放在 ForkJoinPool 中执行。 在这种方式中&#xff0c;主线程不会…

Textpad 缺少Java编译和运行功能

一、问题 缺少Java编译和运行功能 二、处理方法 1、点击菜单Configure->Preferences 2、点击 Tools -> Add -> Java SDK Commands 3、点击应用和确认 三、结果

MATLAB算法实战应用案例精讲-【优化算法】Tiki-taka算法(TTA)(附MATLAB代码实现)

前言 Tiki-Taka战术体系曾经帮助西班牙国家队及巴塞罗那俱乐部取得了巨大的成功。然而,在2018年世界杯西班牙全场传球1100余次(职业比赛场均传球500次左右,西班牙场均800次左右)却被控球率只有20%的俄罗斯淘汰后,人们开始意识到大量机械的传球不但会让球迷觉得枯燥乏味,…

基于微信小程序的停车场预约收费小程序设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

【数据结构】冒泡排序,快速排序的学习知识总结

目录 1、冒泡排序 1.1 算法思想 1.2 代码实现 方式一&#xff1a;顺序表 方式二&#xff1a;链表 2、快速排序 2.1 算法思想 2.2 代码实现 2.3 例题分析 1、冒泡排序 1.1 算法思想 冒泡排序是一种简单的排序算法&#xff0c;它的基本思想是从数组的第一个元素开始…

ahk系列——ahk_v2实现win10任意界面搜狗翻译

1、准备环境 win10或者以上系统安装ahkv2_64环境&#xff0c;安装包安装好后会有32和64位的unicode版本准备一个编译器&#xff0c;我用idea&#xff0c;不会ahk编程的我会把编译好的exe连接放到最后需要 联网 才能翻译 2、 使用方法 选中需要翻译的文字&#xff0c;然后ctr…

【OSCAR开源产业大会分论坛】开源大模型走向何方?

再过俩月&#xff0c;ChatGPT 即将迎来推出一周年纪念日。作为开历史先河的 AI 大模型&#xff0c;ChatGPT 像一针猛戳进千行百业中枢神经的兴奋剂&#xff0c;在全球掀起空前绝后的 AI 军备竞赛热潮。 近一年来&#xff0c;我们看到 GPT-3.5 完成向多模态的 GPT-4 进化&#x…

[Realtek sdk-3.4.14b]RTL8197FH-VG 2.4G to WAN吞吐量低于60%的问题分析及解决方案

问题描述 RTL8197FH-VG 2.4G wifi to WAN吞吐量低于65%的标准,正常2T2R的wifi 300Mbps x 65% = 195Mbps,但是实际只能跑到160Mbps,这个时候CPU的idl已经为0,sirq占用率达到98%左右 网络拓扑 一台PC通过2.4G WiFi连接到RTL8197FH-VG,另外一台PC直接通过WAN口连接到RTL8197…

【Verilog教程】6.7 Verilog流水线

关键词&#xff1a;流水线&#xff0c;乘法器 硬件描述语言的一个突出优点就是指令执行的并行性。多条语句能够在相同时钟周期内并行处理多个信号数据。 但是当数据串行输入时&#xff0c;指令执行的并行性并不能体现出其优势。而且很多时候有些计算并不能在一个或两个时钟周期…

美篇作文网教学资源源码-自带作文数据

非常漂亮的UI设计和页面排版&#xff01; 自适应手机pc端 页面内容均支持自定义 可以用来做网站矩阵&#xff0c;或者增强你其他网站板块&#xff0c;或者单独运营都可以。 可以通过广告方式变现&#xff0c;或者引流等等 友好的seo&#xff0c;更容易被浏览器收录 关注青狐…