Java图形用户界面程序设计所需要使用的工具

Java图形用户界面程序设计


前言

推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏网站,请点击下方链接查看。
https://www.captainbed.cn/f1

通常情况下,java语言一般是用来开发后台程序的,所谓的后台程序就是部署在服务器端的程序,默默的工作,用户是看不到任何界面的,所以很多情况下,学习java会感觉很枯燥。

事实上,我们使用java语言同样可以完成图形化界面程序的开发,而学习图形化界面编程相对来说就会有趣很多,因为所见即所得,也就是说,我们写的大部分代码的执行效果,是可以通过图形化界面实实在在能够看得到的。

java使用AWT和Swing相关的类可以完成图形化界面编程,其中AWT的全称是抽象窗口工具集(Abstract Window Toolkit),它是sun公司最早提供的GUI库,这个GUI库提供了一些基本功能,但这个GUI库的功能比较有限,所以后来sun公司又提供了Swing库。通过使用AWT和Swing提供的图形化界面组件库,java的图形化界面编程非常简单,程序只需要依次创建所需的图形组件,并以合适的方式将这些组件组织在一起,就可以开发出非常美观的用户界面。


一、图形用户界面程序设计的概述

GUI概述

程序使用者与程序之间进行的交互操作和信息交换,都必须借助程序的用户界面。程序的用户界面大致可分为两种:命令行用户界面(Command Line Interface, CLI) 和图形用户界面(Graphical User Interface, GUI)。其中,GUI 以图形形式的窗体代表应用程序;在窗体、对话框等容器上添加菜单、按钮等标准图形元素,组成直观的用户界面;

程序的结果同样是图形形式输出。GUI 程序在操作上往往借助鼠标、键盘发送命令、启动操作。正因为 GUI 既在视觉上给用户舒适的感觉,又使得操作简单,所以成为主流的程序用户界面。

在Java 程序设计中,可通过三种途径实现 GUI:调用Java提供的相关类和接口编写代码,使用配置文件(譬如 XML 配置文件),借助可视化编辑环境(如 Window Builder)。就本质上而言,后两种途径都以第一种途径为基础:在后续的学习中,主要介绍第一种途径。

Java GUI技术的发展

Java提供了强大而丰富的GUI编程支持,利用这些技术可以轻而易举地开发出高效率的、便于操作的GUI程序。Java的图形用户界面技术经历了3个发展阶段:AWT(Abstract User Intertace) 技术、Swing 技术和JavaFX技术。JavaFX融入了现代GUI技术,方便开发在台式计算机、手持设备和 Web 上跨平台的富因特网应用 (RIA)。即便如此,掌握AWT 和 Swing 技术,仍然是开发 Java GUI程序的基本要求。

AWT, 通常被翻译为"抽象窗口工具包",是Java 提供用来建立和设置图形用户界面的基本工具。这些所谓的"工具"被抽象并归类为 java.awt 包中的类和接口,主要包括用户界面组件类(包括容器类、组件类)、布局管理器、图形和图像工具(包括形状、颜色和字体类)等。

AWT在实际的运行过程中需要调用所在平台的图形系统,并且受其影响而在不同平台下呈现出不同的外观。例如,同样的代码运行在 Windows 平台下,或者 UNIX 平台下,显示结果存在差异。根据 AWT 对平台的这种依赖性,所提供的组件被称作"重量级组件"。

为了改善 Java GUI 技术,又研发了 Swing 技术;自JDK1.2 开始,增加了新的javax.swing包,提供了功能更齐全和更灵活的Swing 组件类。Swing 以AWT 为基础,在保留 AWT 所有功能的同时,进一步对 AWT的功能进行扩展。Swing组件的实现使用的是百分之百的Java代码,且不需调用平台的图形系统。根据 Swing对平台的这种非依赖性,所提供的组件被称为"轻量级组件"。

AWT 和 Swing 所提供的 GUI 工具都包括3个概念:组件(Component)、容器(Container)、和布局管理器(LayoutManager),每个概念对应着一个类或接口。

组件是指以图形化的方式展现,能与用户进行交互的 GUI 元素。在Java GUI中,组件是最基本的单位;常见的组件有标签、文本框、按钮等。在 AWT和 Swing中,提供了Component 类、JComponent 类及它们的子类,这些类实例化后的对象就是生成的相应组件。然而,组件并不能独立地显示,必须将其放置在容器中。

容器是指能够容纳组件(或者其他容器)的一种特殊组件,并使它们成为一个整体。在AWT 和 Swing中,提供了 Container 类及其子类,这些类实例化后的对象就是生成的相应容器。Container 类的父类是 Component,因此容器也可以是一个组件,具有组件的所有性质。使用容器组织其他组件对象,能够实现设计的灵活性,也能以整体结构来布置界面。

布局管理器是指用来设置容器中布局的组织管理方式。容器中的各个组件之间的位置、大小关系就是布局;在 AWT 和 Swing 中,提供了 LayoutManager 接口及其实现类来管理布局。每个容器在实例化时都实现了一个布局管理器实例,不同的容器有不同的默认布局管理器。使用布局管理器生成的GUI具有良好的平台无关性。

完成 GUI应用程序所应具备的功能,除了合理使用各种容器、组件和布局管理方式产生美观的界面外,还需要进行事件处理,以达到程序与用户的交互,从而实现程序的功能。Java 语言主要在 java.awt.event包提供了AWT 组件和 Swing组件所激发的各类事件的接口和类,用来检测并对事件做出反应。

综上所述,AWT和 Swing 以类(或接口)的形式提供了丰富的GUI工具,所以重点是掌握这些类(接口)的使用。容器类实例化得到容器对象,用于容纳所有其他 GUI组件的载体;布局管理器类实例化布局管理器对象,调用容器对象的成员方法 setLayout()设置布局方式为布局管理器对象;组件类实例化得到组件对象,调用容器对象的成员方法add()将组件对象添加到容器对象中。针对不同组件激发的不同事件,定义类去实现相应的事件监听器接口,按照"事件委托处理模型"完成事件处理。

二、AWT概述

简介

当 JDK 1.0发布时, Sun 提供了 一套基本的GUI类库,这个GUI类库希望可以在所有平台下都能运行 , 这套基本类库被称为"抽象窗口工具集 CAbstract Window Toolkit )",它为Java应用程序提供了基本的图形组件 。

AWT是窗口框架,它从不同平台的窗口系统中抽取出共同组件 , 当程序运行时,将这些组件的创建和动作委托给程序所在的运行平台 。 简而言之 ,当使用 AWT 编写图形界面应用 时, 程序仅指定了界面组件的位置和行为,并未提供真正的实现,JVM调用操作系统本地的图形界面来创建和平台 一致的对等体 。

​ 使用AWT创建的图形界面应用和所在的运行平台有相同的界面风格 , 比如在 Windows 操作系统上,它就表现出 Windows 风格 ; 在 UNIX 操作系统上,它就表现出UNIX 风格 。 Sun 希望采用这种方式来实现 " Write Once, Run Anywhere " 的目标 。

AWT继承体系

所有和 AWT 编程相关的类都放在 java.awt 包以及它的子包中, AWT 编程中有两个基类 :ComponentMenuComponent

  • Component:代表一个能以图形化方式显示出来,并可与用户交互的对象,例如 Button 代表一个按钮,TextField 代表 一个文本框等;
  • MenuComponent:则代表图形界面的菜单组件,包括 MenuBar (菜单条)、 Menultem (菜单项)等子类。

其中 Container 是一种特殊的 Component,它代表一种容器,可以盛装普通的 Component

AWT中还有一个非常重要的接口叫LayoutManager ,如果一个容器中有多个组件,那么容器就需要使用LayoutManager来管理这些组件的布局方式。

总结

AWT(Abstract Window Toolkit)是Java中用于创建图形用户界面(GUI)的一套类库。它提供了一系列的组件类,包括窗口、按钮、文本框、标签等,可以用于构建用户友好的界面。

AWT的设计理念是基于本地操作系统窗口系统的,所以它使用了操作系统提供的原生组件来渲染界面。这样可以使得AWT应用程序在不同平台上具有相似的外观和行为。

AWT提供了一套事件模型,可以处理用户按下按钮、鼠标点击等操作。开发人员可以通过注册监听器来响应这些事件,并进行相应的处理。

AWT也提供了一些布局管理器,可以用来控制组件的位置和大小。开发人员可以使用布局管理器来自动调整界面的排列,以适应不同的窗口大小。

尽管AWT是Java的一部分,但它的效率和灵活性相对较低。因此,许多Java程序员更喜欢使用Swing,它是建立在AWT之上的高级GUI工具包。Swing提供了更丰富的组件和更高的性能,使得开发人员可以创建更复杂、更具交互性的GUI应用程序。

三、Swing概述

相较于 AWT,Swing 是Java 语言中更先进的GUI技术。Swing 技术采用 MVC 体系结构,将数据的内容和显示进行分离,增加灵活性。Swing 组件新增诸多功能:实现Accessible 接口提供对可存取性的支持;可调用成员方法 registerKeyboardAction()以键盘操作代替鼠标操作;可调用成员方法 setBorder()设置组件外围的边框:标签、按钮等组件可以使用图标。

大多数 Swing 组件都在 javax.swing 包中;只有 javax.swing.table.JTableHeaderjavax.swing.text.JTexrComponent 两个组件是例外。Swing 组件都是轻量级组件,但是不能说 javax.swing 包中的类都是轻量级组件类,例如该包中的JFrame、JDialog、JWindow、JApplet 都不是轻量级组件类。Swing 组件类和 javax.swing 包中的类,是两个不同的范畴。Swing 组件大多以 JComponent 类作为父类(如图4-13所示);JComponent 类是一个抽象类,定义了所有子类组件的一般成员方法;而 JComponent 类继承自 Container类,所以这部分组件都可以作为容器使用。

根据图4-13 很容易发现 Swing 和 AWT有紧密的关系:其一,Swing的类都是AWT 的 Container 类的直接子类或者间接子类;其二,Swing 的类名很多是在 AWT 的某个类名前加上一个字母"J"构成:这说明 Swing对 AWT中的等同类进行了功能上的扩展。另外, JFrame、 JDialog、JApplet等3个非轻量级组件类的父类分别是AWT 包中的 Frame、Dialog、 Applet。

Swing 中常用来生成容器对象的JFrame、JDialog 和 JApplet等3个类,与AWT包中的 Frame、Dialog 和 Applet基本类似;然则,Swing 比 AWT更加强调容器的概念,容器中可以再放置容器,也可以放置组件;所以,JFrame、JDialog 和 JApplet 实例化的容器对象被称为顶层容器。JPanel 属于中间容器,和顶层容器形成容器的层次结构。

Swing概述

实际使用 Java 开发图形界面程序时 ,很少使用 AWT 组件,绝大部分时候都是用 Swing 组件开发的 。 Swing是由100%纯 Java实现的,不再依赖于本地平台的 GUI, 因此可以在所有平台上都保持相同的界面外观。独立于本地平台的Swing组件被称为轻量级组件 ;而依赖于本地平台的 AWT 组件被称为重量级组件

由于 Swing 的所有组件完全采用 Java 实现,不再调用本地平台的 GUI,所以导致 Swing 图形界面的显示速度要比 AWT 图形界面的显示速度慢一些,但相对于快速发展的硬件设施而言,这种微小的速度差别无妨大碍。

优势

  1. Swing 组件不再依赖于本地平台的 GUI,无须采用各种平台的 GUI 交集 ,因此 Swing 提供了大量图形界面组件 , 远远超出了 AWT 所提供的图形界面组件集。

  2. Swing 组件不再依赖于本地平台 GUI ,因此不会产生与平台 相关的 bug 。

  3. Swing 组件在各种平台上运行时可以保证具有相同的图形界面外观。

​ Swing 提供的这些优势,让 Java 图形界面程序真正实现了 " Write Once, Run Anywhere" 的 目标。

Swing的特征

  1. Swing 组件采用 MVC(Model-View-Controller, 即模型一视图一控制器)设计模式:

    • 模型(Model): 用于维护组件的各种状态;

    • 视图(View): 是组件的可视化表现;

    • 控制器(Controller):用于控制对于各种事件、组件做出响应 。

    当模型发生改变时,它会通知所有依赖它的视图,视图会根据模型数据来更新自己。Swing使用UI代理来包装视图和控制器, 还有一个模型对象来维护该组件的状态。例如,按钮JButton有一个维护其状态信息的模型ButtonModel对象 。 Swing组件的模型是自动设置的,因此一般都使用JButton,而无须关心ButtonModel对象。

  2. Swing在不同的平台上表现一致,并且有能力提供本地平台不支持的显示外观 。由于 Swing采用 MVC 模式来维护各组件,所以 当组件的外观被改变时,对组件的状态信息(由模型维护)没有任何影响 。因 此,Swing可以使用插拔式外观感觉 (Pluggable Look And Feel, PLAF)来控制组件外观,使得 Swing图形界面在同一个平台上运行时能拥有不同的外观,用户可以选择自己喜欢的外观 。相比之下,在 AWT 图形界面中,由于控制组件外观的对等类与具体平台相关 ,因此 AWT 组件总是具有与本地平台相同的外观 。

总结

Swing是Java的一个用户界面(UI)工具包,用于创建窗口、按钮、文本框等图形用户界面元素。它提供了一套丰富的组件,以及一些用于布局和事件处理的类和接口。

Swing是Java Foundation Classes(JFC)的一部分,它由一组独立的Java类组成,包含了一些用于创建复杂、灵活和可定制的用户界面的工具。

Swing是轻量级的,意味着它不依赖于本机操作系统的用户界面库。这使得Swing应用程序在不同平台上的外观和行为都是一致的。

通过使用Swing,开发者可以创建具有各种样式和功能的图形用户界面。Swing提供了一些常见的UI组件,如按钮、文本框、标签等,同时也支持自定义组件的创建。

Swing还提供了一些用于布局和控制组件的类和接口。开发者可以使用这些工具来创建和管理复杂的用户界面。同时,Swing还提供了一些用于事件处理的类和接口,使开发者能够对用户交互做出相应。

总而言之,Swing是Java中用于创建图形用户界面的工具包,提供了丰富的组件和工具,使开发者能够轻松创建强大、灵活和可定制的用户界面。


相关推荐
penguin_bark2 分钟前
69. x 的平方根
算法
sukalot9 分钟前
windows C++-使用任务和 XML HTTP 请求进行连接(一)
c++·windows
JUNAI_Strive_ving11 分钟前
番茄小说逆向爬取
javascript·python
这可就有点麻烦了12 分钟前
强化学习笔记之【TD3算法】
linux·笔记·算法·机器学习
救救孩子把12 分钟前
深入理解 Java 对象的内存布局
java
落落落sss15 分钟前
MybatisPlus
android·java·开发语言·spring·tomcat·rabbitmq·mybatis
苏宸啊18 分钟前
顺序表及其代码实现
数据结构·算法
看到请催我学习20 分钟前
如何实现两个标签页之间的通信
javascript·css·typescript·node.js·html5
万物皆字节20 分钟前
maven指定模块快速打包idea插件Quick Maven Package
java
lin zaixi()21 分钟前
贪心思想之——最大子段和问题
数据结构·算法