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(单行文本框)等等。

Swing简介

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

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

时间: 2024-10-09 15:51:10

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

我的全栈之路-Java基础之macOS+Visual Studio Code开发Java程序

我的全栈之路-Java基础之macOS+Visual Studio Code开发Java程序 我的全栈之路 3.1 开发环境说明 首先说明下使用软件的版本,操作系统是基于macOS10.14.5,然后在macOS上安装了JDK11.03,如果想要了解macOS下JDK的安装,可以参考我的全栈之路-Java基础之macOS安装JDK,编辑器选用了微软公司开源的Visual Studio Code. 软件名称 软件版本 操作系统 macOS10.14.5 JDK JDK11.0.3 编辑器 Visu

我的全栈之路-Java基础之数据存储

我的全栈之路-Java基础之数据存储 我的全栈之路 2.1 标识符 标识符是在程序开发时给包,类.接口.注解,变量,方法命名的字符序列. 标识符在命名时需要遵守相关的规则和规范: 标识符的命名规则: 标识符不能是Java的关键字和保留字,关键字是Java中被赋予赋予特殊含义的单词,例如public static void等等.保留字是现有Java版本尚未使用,但是未来的Java版本可能会做关键字使用的单词,例如goto,const.但是可以包含关键字,保留字. 标识符可以由字母.数字.下划线组成

我的全栈之路-Java架构师技术栈

我的全栈之路-Java架构师技术栈 我的全栈之路 JavaSE篇 Java概述与开发环境搭建 Java数据存储 Java数据计算 Java程序流程控制 Java数组 Java面向对象程序设计(上) Java面向对象程序设计(中) Java面向对象程序设计(下) Java常用API 集合 泛型 异常处理 注解 IO/BIO/NIO AIO网络框架tio设计与实现 多线程 网络编程 反射和动态代理 日志 XML 正则表达式 Java语言新特性实践 数据库编程(JDBC+MySQL) 数据结构 算法

14.5-全栈Java笔记:java.awt这些布局怎么写?|流式|边界|网格

布局管理器 读者会发现,如果使用坐标定位法(空布局),在一个比较复杂的界面上定位每个控件的坐标是一个非常麻烦的工作,而且在界面大小发生改变时,控件的绝对位置也不会随之发生改变.那么如果我们想让用户界面上的组件可以按照不同的方式进行排列怎么办?例如:可以依序水平排列,或者按网格方式进行排列等,其实每种排列方案都是指组件的一种"布局",要管理这些布局,就需要本节学习的布局管理器. 管理布局的类由java.awt包来提供,布局管理器是一组实现java.awt.LayoutManager接口的

14.2-全栈Java笔记: Java Swing创建窗口,原来这么简单!!!

上节我们聊到GUI(Graphical User Interface)的概念,并学习GUI编程中主要需掌握两个包,分别是:AWT和Swing,本节我们会通过Swing程序中常用的类和控件来实现第一个窗口.  javax.swing.JFrame JFrame在GUI中为一个窗口对象,继承于Frame.JFrame控件用于在Swing程序中创建窗体.如表1所示,为JFrame常见的构造方法. 注意: Java语言规定在GUI编程中任何窗口实例化出来时默认为不可见(即隐藏)状态,所以当我们使用构造方

12.7-全栈Java笔记:Java网络编程(五)

UDP通讯的实现 1.DatagramSocket:用于发送或接收数据包 当服务器要向客户端发送数据时,需要在服务器端产生一个DatagramSocket对象,在客户端产生一个DatagramSocket对象.服务器端的DatagramSocket将DatagramPacket发送到网络上,然后被客户端的DatagramSocket接收. DatagramSocket有两种构造函数.一种是无需任何参数的,常用于客户端.另一种需要指定端口,常用于服务器. 常用方法:send.receive. cl

12.4-全栈Java笔记:Java网络编程(二)

 基于TCP协议的Socket编程和通信 在网络通讯中,第一次主动发起通讯的程序被称作客户端(Client)程序,简称客户端,而在第一次通讯中等待连接的程序被称作服务器端(Server)程序,简称服务器.一旦通讯建立,则客户端和服务器端完全一样,没有本质的区别. "请求-响应"模式: Socket类:发送TCP消息 ServerSocket类:创建服务器 套接字是一种进程间的数据交换机制.这些进程既可以在同一机器上,也可以在通过网络连接的不同机器上.换句话说,套接字起到通信端点的作用.

12.3-全栈Java笔记:Java网络编程(一)

Java为了可移植性,不允许直接调用操作系统,而是由java.net包来提供网络功能.Java虚拟机负责提供与操作系统的实际连接.  InetAddress 作用:封装计算机的IP地址和DNS(没有端口信息!). 特点:这个类没有构造函数.如果要得到对象,只能通过静态方法:getLocalHost.getByName. getAllByName. getAddress.getHostName. [示例1]使用getLocalHost方法创建InetAddress对象 InetAddress ad

11.2-全栈Java笔记:Java中如何实现多线程

在JAVA中使用多线程非常简单,我们先学习如何创建和使用线程,然后结合案例再深入剖析线程的特性. 通过继承Thread类实现多线程 继承Thread类实现多线程的步骤: 1. 在Java中负责线程的这个功能的是java.lang.Thread 这个类 2. 可以通过创建 Thread 的实例来创建新的线程. 3.  每个线程都是通过某个特定Thread对象所对应的方法run( )来完成其操作的,方法run( )称为线程体. 4.   通过调用Thead类的start()方法来启动一个线程. [示