上课没认真听,下课不好好写。

关于GUI,首先了解了一下什么是GUI:

GUI(Graphical User Interface),图形用户界面。采用图形方式显示的计算机操作用户接口。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更容易接受。GUI和CLI(命令行界面)最大的不同是,GUI引入鼠标作为输入源(后期又以触屏为输入),这使得GUI的交互成为可能。

其次了解,图形化界面GUI实现的几个重要组件

1.JFrame 是容器类

Java的GUI程序的基本思路是以JFrame为基础,他是屏幕上windows的对象,能够最大化,最小化,关闭。

JFrame是一个顶层的框架类,好比一个窗户的框子,这个框子可以嵌入多个玻璃窗

1、构造窗体对象

2、设置窗体外观属性

3、设置窗体可见

对JFrame添加组件有两种方式:

1、用getContentPane()方法获得JFrame的内容面板,再对其加入组件:frame.getContentPane().add(childComponent)
2、建立一个Jpanel或JDesktopPane之类的中间容器,把组件添加到容器中,用setContentPane()方法把该容器置为JFrame的内容面板

JPanel  contentPane=new  JPanel();//把其它组件添加到Jpanel中;
frame.setContentPane(contentPane);//把contentPane对象设置成为frame的内容面板

常用方法

void add(Component):添加组件。
void add(Component,int):添加组件至索引指定位置。
void add(Component,Object):按照指定布局限制添加组件。
void add(Component,Object,int):按照指定布局管理器限制添加组件到指定位置。
void remove(Component):移除组件。
void remove(int):移除指定位置的组件。
void removeAll():移除所有组件。
void paintComponent(Graphics):绘制组件。``
void repaint():重新绘制。
void setPreferredSize(Dimension):设置组件尺寸。
Dimension getPreferredSize():获取最佳尺寸。

2.AWT 是抽象窗口组件工具包,是 Java 最早的用于编写图形节目应用程序的开发包。

AWT是用来处理图形最基本的方式,AWT包提供:

1、图形界面组件:窗口,按钮,菜单等

2、容器:实现组件管理,布局管理

3、布局管理器:用来安排图形界面组件的位置

4、Graphics:在组件上进行图像绘制所使用的图形环境的父类

事件处理对象:用来处理图形界面组件所触发的事件

//引入AWT包中的所有类
import java.awt.*;

3.Swing 是为了解决 AWT 存在的问题而新开发的包,它以 AWT 为基础的。

AWT的起初设想就是为了统一实现不同操作系统的图像界面,但问题是,不同操作系统图形库的功能可能不一样,在一个平台上存在的功能在另外一个平台上则可能不存在,为此AWT不得不通过牺牲功能来实现平台无关性。

不仅如此,AWT还是一个重量级组件,使用比较麻烦,且设计出的图形界面不够美观功能也非常有限。为此,Sun公司对AWT进行改进,提出了Swing组件,提供了更加丰富的组件和功能,来满足GUI设计的一切需求。

Swing是JAVA基础类的一部分,包括了图形用户器件:文本框、按钮、分割窗格、表。需要注意的是,Swing并不是AWT的替代品,而是在原有的AWT的基础上进行了补充和改进。

三者之间的关系

JFrame、AWT(Abstract Window Toolkit)和Swing都是与Java图形用户界面(GUI)编程相关的概念和工具。

  1. AWT(Abstract Window Toolkit)

    • AWT是Java最早的GUI工具包,提供了一组与平台相关的类,用于创建和管理GUI组件,如窗口、按钮、文本框等。
    • AWT的组件是对底层操作系统窗口的简单封装,因此它们的外观和感觉取决于底层操作系统。
  2. Swing

    • Swing是在AWT之上构建的一套GUI工具包,提供了更丰富、更灵活、更独立于平台的组件。
    • Swing组件是由Java代码实现的,而不是直接使用底层操作系统的GUI组件。这使得Swing应用程序在不同平台上具有更一致的外观和感觉。
  3. JFrame

    • JFrame是Swing库中的一个类,它是一个顶级容器,用于创建窗口。
    • JFrame继承自AWT的Frame类,但它提供了更多的功能和更丰富的选项,使得窗口的创建和管理变得更加灵活和方便。

在关系上:

  • AWT是Java的最初的GUI工具包,提供了一些基本的GUI组件。
  • Swing是建立在AWT之上的,提供了更丰富和独立于平台的GUI组件。
  • JFrame是Swing库中用于创建窗口的一个类,它扩展了AWT的Frame类。因此,JFrame可以看作是Swing中用于创建窗口的一种工具。

GUI界面实现小学生口算题卡功能(一)| 简要了解GUI的更多相关文章

  1. Python_小学口算题库生成器

    import random import os import tkinter import tkinter.ttk from docx import Document columnsNumber = ...

  2. 洛谷 P1957 口算练习题

    洛谷 P1957 口算练习题 题目描述 王老师正在教简单算术运算.细心的王老师收集了i道学生经常做错的口算题,并且想整理编写成一份练习. 编排这些题目是一件繁琐的事情,为此他想用计算机程序来提高工作效 ...

  3. 《口算大作战 2》DLC:算法真奇妙

    211614331 王诚荣 211614354 陈斌 --第一次结对作业 DLC DLC:三年级混合运算模块现已更新!现在您可以愉快的使用三年级题库啦.同时您必须拥有本体才能使用此DLC 单击此处查看 ...

  4. matlab GUI界面编程总结

    去年做了一些关于Matlab GUI的程序,现在又要做相关的东西,回想起来,当时很多经验没有记录下来,现在回顾起来始终觉得不爽,所以从现在开始,一定要勤写记录. 从简单的例子说起吧. 创建Matlab ...

  5. Matlab GUI界面

    做SVD的时候,看学姐的demo,用到了matlab的GUI,感兴趣就自己学了一下: 从简单的例子说起吧. 创建Matlab GUI界面通常有两种方式: 1,使用 .m 文件直接动态添加控件     ...

  6. C# WinForm动态控件实例:口算训练

    昨天晚上回寝室看到室友正在被一个C#课的作业苦恼,作业的内容是编写一个口算训练程序,能够实现随意添加题目数量.于是,喜欢写C#的我就决定解救一下他们. 创建动态控件 既然要动态添加,那就必须使用动态控 ...

  7. 【Visual C++】游戏开发五十六 浅墨DirectX教程二十三 打造游戏GUI界面(一)

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/16384009 作者:毛星云 ...

  8. 用Python开发小学二年级口算自动出题程序

    版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 武汉光谷一小二年级要求家长每天要给小孩出口算题目,让孩子练习. 根据老师出题要求编写了Python程序 ...

  9. MATLAB(3)——GUI界面设计入门

    作者:桂. 时间:2017-03-01  18:43:35 链接:http://www.cnblogs.com/xingshansi/articles/6485688.html 声明:转载请注明出处, ...

  10. 小学生轻松做题App

    作业链接:https://edu.cnblogs.com/campus/fzzcxy/2016SE/homework/2180 原型模型设计工具:墨刀 原型模型链接:https://modao.cc/ ...

随机推荐

  1. 青少年CTF平台-Web-Robots

    题目信息 题目名称:Robots 题目描述:昨天十三年社团讲课,讲了Robots.txt的作用,小刚上课没有认真听课正在着急,你能不能帮帮忙? 题目难度:一颗星 解题过程 访问题目链接 在这里插入图片 ...

  2. 学习Linux,要把握哪些重点?

    学习Linux,要把握哪些重点? 不知道有没有想学习Linux,但又把握不住学习重点,找不到合适的学习方法的小伙伴,反正我刚开始学习Linux时就像无头苍蝇似的"乱撞",没有把握住 ...

  3. PB从入坑到放弃(六)动态SQL应用

    写在前面 动态 SQL 语句是部分或者整个 SQL 语句在运行时才能确定,可以更好的与用户进行交互,大大提高了SQL的灵活性 一.执行SQL语句 1.1 执行无入参SQL ① 语法 EXECUTE I ...

  4. jsp+servlet实战项目

    第一步:新建maven项目,项目中添加dao,entity,service,servlet,util包第二步:导入依赖 第三步:数据库建表 第四步:entity实体包(疯转) 第五步:在util工具包 ...

  5. 【pandas小技巧】--字符串转数值

    字符串转数字的用途和场景很多,其中主要包括以下几个方面: 数据清洗:在进行数据处理时,经常会遇到一些数据类型不匹配的问题,比如某些列中的字符串类型被误认为是数字类型,此时需要将这些字符串类型转换为数字 ...

  6. 关于 Llama 2 的一切资源,我们都帮你整理好了

    Llama 2 是一个由 Meta 开发的大型语言模型,是 LLaMA 1 的继任者.Llama 2 可通过 AWS.Hugging Face 获取,并可以自由用于研究和商业用途.Llama 2 预训 ...

  7. 给DataTable添加额外字段

    //dt为DataTable dt.Columns.Add("字段名");//创建字段 //给新增字段赋值 foreach(DataRow item in dt.Rows) { i ...

  8. LeetCode952三部曲之二:小幅度优化(137ms -> 122ms,超39% -> 超51%)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<LeetCode952三部曲& ...

  9. 「atcoder - ABC215G」Colorful Candies 2

    link. 称题目中的 \(c_i\) 为 \(a_i\),令 \(c_i\) 为第 \(i\) 种颜色的出现次数,令 \(C\) 为颜色总数.固定 \(k\),令 \(t_i=1\),如果颜色 \( ...

  10. NFC and Contactless Technologies

    NFC and Contactless Technologies NFC与无接触技术 NFC technology enables simple and safe two-way interactio ...