GUI概述:GUI(Graphical User Interface)—图形化用户界面。用户和程序之间可以通过GUI能方便友好地进行交互,在Java语言中,JFC(Java Foundation Classed)是开发GUI的API集,它主要包含以下几个部分:

a)   AWT(抽象窗口工具包):Java开发用户界面最初的工具包,是建立JFC的主要基础;

b)   Swing组件:建立在AWT之上,新的,功能更强大的图形组件包;

c)   JAVA 2D:实现高质量的二维图形;

AWT框架:

①   在java.awt包中包含了一个完整的类集以支持GUI程序的设计,其中的类及相互关系可以用下图来描述:

②   Component类是最核心的类,它是构成Java图形用户界面的基础,大部分组件都是由该类派生出来的;

③   Component类主要由基本组件和容器(Container)组件组成;

④   容器(Container)组件主要分为:Window容器和Panel容器;

Frame容器:

①   Window是能独立存在的容器,它有一个子类Frame,它是一个带有标题和缩放角的窗口;

②   Frame有一个构造方法,Frame(String title);

③   可以通过add()方法,在Frame容器中加入其它组件;

④   Frame容器有默认的布局管理器;

⑤   Frame被创建后,是不可见的;

Panel容器:

①   Panel只能存在于其它的容器(Window或其子类)中才能显示出来;

②   通过Panel的默认构造方法Panel()可以创建一个Panel;

③   容器不但能容纳组件,还能容纳其它容器,通过容器的嵌套可以制作出复杂的布局;

创建一个窗体类

 class MyFrame1 extends Frame{
public MyFrame1(String title){
super(title);
} public void init(){
this.setSize(300, 300);//设置窗体的宽高
this.setBackground(Color.GREEN);//给窗体设置背景色
this.setVisible(true);//设置窗体可见
}
}

主方法调用

MyFrame1 myFrame1=new MyFrame1("自己的窗体"); myFrame1.init();

输出结果如图:

创建一个带Panel和Button的窗体:

 class MyFrame2 extends Frame{
public MyFrame2(String title){
super(title);
} public void init(){
this.setSize(300, 300);//设置窗体的宽高
this.setBackground(Color.GREEN);//给窗体设置背景色
this.setLayout(null);//去掉窗体的默认的布局管理器 Panel panel=new Panel();
panel.setLayout(null);//去掉Panel容器默认的布局管理器
panel.setBackground(Color.BLUE);
panel.setBounds(0, 0, 200, 200);//距离父容器(Frame)上顶点,左顶点0,宽高200 Button btn1=new Button("click me");//创建一个按钮
btn1.setBounds(0, 0, 100, 100);
btn1.setBackground(Color.RED); panel.add(btn1);//添加按钮到面板中 this.add(panel);//把panel加到窗体中 this.setVisible(true);//让窗体可见
}
}

输出结果如图:

GUI——AWT框架和容器,创建简单窗体的更多相关文章

  1. vc++实例创建简单窗体

    #include<windows.h>#include<stdio.h>LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg,WPAR ...

  2. 简单的Python GUI界面框架

    Python开发GUI界面, 可以使用pyQT或者wxpython. 不过不论pyQT还是wxpython都需要比较多的学习成本.Python工程往往是用于快速开发的,有些时候引入pyQT,wxpyt ...

  3. 怎么处理sqlserver2017部署在winowsDocker上时区无法修改成功的方式,并且可以多创建新的容器调用简单的方式直接使用!

    在创建该容器的时候我们执行的语句中添加了一个 从图中所看到的内容,上海时区,按照正常流程一般都是可疑正常执行的,但最后事情并不是我们所想的那么简单. 我们进入对应的容器里面 ,执行语句之后查找对应的文 ...

  4. 基于tauri+vue3.x多开窗口|Tauri创建多窗体实践

    最近一种在捣鼓 Tauri 集成 Vue3 技术开发桌面端应用实践,tauri 实现创建多窗口,窗口之间通讯功能. 开始正文之前,先来了解下 tauri 结合 vue3.js 快速创建项目. taur ...

  5. spring框架--IOC容器,依赖注入

    思考: 1. 对象创建创建能否写死? 2. 对象创建细节 对象数量 action  多个   [维护成员变量] service 一个   [不需要维护公共变量] dao     一个   [不需要维护 ...

  6. SpringMVC——DispatcherServlet的IoC容器(Web应用的IoC容器的子容器)创建过程

    在上一篇<Spring--Web应用中的IoC容器创建(WebApplicationContext根应用上下文的创建过程)>中说到了Web应用中的IoC容器创建过程.这一篇主要讲Sprin ...

  7. Spring框架-IOC和AOP简单总结

    参考博客: https://blog.csdn.net/qq_22583741/article/details/79589910 1.Spring框架是什么,为什么,怎么用 1.1 Spring框架是 ...

  8. Spring IOC容器创建bean过程浅析

    1. 背景 Spring框架本身非常庞大,源码阅读可以从Spring IOC容器的实现开始一点点了解.然而即便是IOC容器,代码仍然是非常多,短时间内全部精读完并不现实 本文分析比较浅,而完整的IOC ...

  9. Spring框架IOC容器和AOP解析 非常 有用

    Spring框架IOC容器和AOP解析   主要分析点: 一.Spring开源框架的简介  二.Spring下IOC容器和DI(依赖注入Dependency injection) 三.Spring下面 ...

随机推荐

  1. 运行JavaWeb项目报错Access denied for user 'root'@'localhost' (using password: YES)

    问题重现:(以下讨论范围仅限Windows环境): C:\AppServ\MySQL> mysql -u root -p Enter password: ERROR 1045 (28000):  ...

  2. GPnP profile内容

    <?xml version="1.0" encoding="UTF-8"?>  <gpnp:GPnP-Profile Version=&quo ...

  3. [论文理解]SSD:Single Shot MultiBox Detector

    SSD:Single Shot MultiBox Detector Intro SSD是一套one-stage算法实现目标检测的框架,速度很快,在当时速度超过了yolo,精度也可以达到two-stag ...

  4. 2018.4.15 Mac系统下如何使用StartUml画好需求分析的类图 (同样适用于windows)

    Mac如何使用StartUml (同样适用于windows) 左侧边栏的英文含义及其用法 关联(Association) [关联关系]:是一种拥有的关系,它使一个类知道另一个类的属性和方法:如:老师与 ...

  5. mysql中的空值问题

    MySQL的查询如果需要用到空值的情况下,where后面的条件就需要注意了 MySQL中的表示空值的方法:is null 和 is not null 比如:select * from user whe ...

  6. Python读写文件实际操作的五大步骤

    Python读写文件在计算机语言中被广泛的应用,如果你想了解其应用的程序,以下的文章会给你详细的介绍相关内容,会你在以后的学习的过程中有所帮助,下面我们就详细介绍其应用程序. 一.打开文件 Pytho ...

  7. Luogu [P3951] 小凯的疑惑

    题目详见:[P3951]小凯的疑惑 首先说明:此题为一道提高组的题.但其实代码并没有提高组的水平.主要考的是我们的推断能力,以及看到题后的分析能力. 分析如下: 证明当k>ab-a-b时,小凯可 ...

  8. java基础——Map集合

    Map以键值对的形式存储数据,其中Map.entry,是Map的内部类,它用来描述Map中的键值对.Map是一个接口,HashMap是他的一个实现类 Map中有几个重要的方法: get(Object ...

  9. cin 和 getline 混用中需要注意的问题

    这段时间在刷题过程中遇到一个cin和getline混合使用中的问题,解决之后记录如下: 先来看一段代码 #include <iostream> #include <string> ...

  10. 【two pointers 细节题】cf1041dD. Glider

    像这样细节老是打挂不行啊…… A plane is flying at a constant height of hh meters above the ground surface. Let's c ...