14.1-全栈Java笔记: Java语言中GUI到底是神马鬼?| AWT | Swing

到目前为止,我们在Java中编写的基本都是基于控制台的程序;而Java编程语言之所以如此流行的一个主要原因之一,就是因为它支持图形用户界面功能,即GUI(Graphical User Interface)。

GUI(Graphical User Interface)即图形用户界面,就是应用程序提供给我们用户操作的图形界面,包括窗口、菜单、工具栏及其它多种图形界面元素,如文本框、按钮、列表框、对话框等。它能使应用程序显得更加友好。

学习Java的GUI编程主要是要掌握两个包,分别是:java.awt、javax.swing包,我们将其简称为AWT和Swing,这两个包中包含了GUI编程需要用到的丰富的类库。

其中AWT(Abstract Window Toolkit,抽象窗口工具包)中的组件有限,不能实现GUI编程所需的所有功能,因此Swing作为AWT的拓展应运而生。Swing中不仅提供了AWT所能提供的所有功能,并且用纯粹的Java代码对AWT 的功能进行了大幅度的扩充,所以Swing可以满足GUI编程的所有需求,我们本章也将围绕Swing的基本空间和布局管理器进行讲解。

我们需要注意的是java.awt包中还有一个我们经常用到的子包:java.awt.event,该包提供了处理由 AWT 组件所激发的各类事件的接口和类,我们会在下一章中对其进行详细讲解。

希望大家经过本章内容的学习,可以做到以下几点:

1、了解GUI编程和AWT包及其组件

2、理解AWT和Swing的区别

3、掌握常用的控件

4、理解Java常用布局管理器

5、运用简单Swing控件编写Java图形化应用程序

老鸟建议:

Java语言本身不擅长开发桌面程序,因此,工作中使用AWT和Swing极少。但是,作为Java中的基础技术,初学者有必要了解一点基本知识。

AWT简介

GUI编程的实现,是由一系列图形化组件来完成的,这些GUI的构件被称为控件;

在Java的早期版本中,GUI控件由名为AWT的标准库来提供的。

除了GUI组件外,AWT还包括其它功能来支持图像绘画、处理剪切/复制类型的数据传送,以及其它相关操作。

java.awt包是Java内置的包,属于Java基本类库(JFC)的一部分,其中包括以下内容:

1.便于用户输入的一组丰富的界面组件。

2.将组件放置在适当位置的几中布局管理器。

3.事件处理模型。

4.图形和图像工具等等。

5.要使用到该包中的类,则必须显式地声明如下语句:import java.awt.*;

如图1所示,为java.awt包中控件类的体系结构图。从图中我们可以看出,控件类的父类为Component,其直接或间接子类中有我们在图形界面中所熟悉控件,如:Frame(窗口)、Button(按钮)、Label(标签)、Checkbox(复选框)、TextArea(多行文本框)、TextField(单行文本框)等等。

图1 java.awt包中控件类的体系结构图

Swing简介

Swing是在AWT基础上发展而来的轻量级组件,与AWT相比不但改进了用户界面,而且所需的系统资源更少。Swing是纯Java组件,使所有的应用程序在不同的平台上运行时具有和本机外观相同的行为。

图2 javax.swing包中控件类的体系结构图

javax.swing包中包含了一系列Swing控件,如果要使用该包中的类,则必须显式地声明如下语句:import javax.swing.*;

如图2所示,为javax.swing包中控件类的体系结构图。从图中我们可以看出,该包下大部分控件都继承自java.awt包中的控件,如:JFrame的父类为Frame,JComponent的父类为Component等。

下节我们将针对Swing程序中常用的类和控件进行讲解与代码示例。



「全栈Java笔记」是一部能帮大家从零到一成长为全栈Java工程师系列笔记。笔者江湖人称 Mr. G,10年Java研发经验,曾在神州数码、航天院某所研发中心从事软件设计及研发工作,从小白逐渐做到工程师、高级工程师、架构师。精通Java平台软件开发,精通JAVAEE,熟悉各种流行开发框架。

笔记包含从浅入深的六大部分:

A-Java入门阶段

B-数据库从入门到精通

C-手刃移动前端和Web前端

D-J2EE从了解到实战

E-Java高级框架精解

F-Linux和Hadoop

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345

推荐阅读更多精彩内容

  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 1,045评论 0 4
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 1,212评论 0 2
  • AWT AWT是Abstract Window Toolkit(抽象窗口工具包)的缩写,是SUN专门针对Java ...
    值得一看的喵阅读 2,337评论 0 1
  • 作者 1 一个Java源程序是由若干个类 组成。 2 class 是Java的关键字,用来定义类。 3 Java应...
    java大湿兄阅读 5,535评论 4 169
  • 我不太喜欢小确幸,因为我经常看见生活中的“小确丧” 早上骑车不小心碾到了一滩污水弄脏了裤子 气喘吁吁的挤上地铁不小...
    朱迪爸阅读 241评论 0 1