【Swing】了解Swing,Swing是什么?
Swing 是新一代的图形界面工具。使用 Swing 来开发图形界面比 AWT 更加优秀,因为 Swing 是一种轻量级组件,它采用纯 Java 实现,不再依赖于本地平台的图形界面,所以可以在所有平台上保持相同的运行效果,对跨平台支持比较出色。除此之外,Swing 提供了比 AWT 更多的图形界面组件,因此可以开发出美观的图形界面程序。
Swing 类库结构
Swing 组件都采用 MVC(Model-View-Controller,即模型-视图-控制器)的设计,实现 GUI 组件的显示逻辑和数据逻辑的分离,从而允许程序员自定义 Render 来改变 GUI 组件的显示外观,以提供更多的灵活性。
Swing 围绕 JComponent 组件构建,JComponent 则由 AWT 的容器类扩展而来。Swing 组织结构如图 1 所示。
图1 Swing类库组织结构图
从图 1 可以看出,Swing 组件除了 AbstmctButton 类之外都以 J 开头。Swing 容器组件直接继承 AWT 类库中的容器组件类,其他大部分组件都是继承 JComponet 组件。组件可以划分为容器组件和非容器组件,容器组件包括 JFmme 和 JDialog。其中 JComponent 定义了非容器类的轻量级组件(JBntton、JPanel、JMenu 等)。
Swing 包
Swing 类库由许多包组成,通过这些包中的类相互协作来完成 GUI 设计。其中,javax.swing 包是 Swing 提供的最大包,它包含将近 100 个类和 25 个接口。几乎所有 Swing 组件都在该包中。表 1 列出了常用的 Swing 包。
包名称 | 描述 |
---|---|
javax.swing | 提供一组“轻量级”组件,尽量让这些组件在所有平台上的工作方式都相同 |
javax.swing.border | 提供围绕 Swing 组件绘制特殊边框的类和接口 |
javax.swing.event | 提供 Swing 组件触发的事件 |
javax.swing.filechooser | 提供 JFileChooser 组件使用的类和接口 |
javax.swing.table | 提供用于处理 javax.swing.JTable 的类和接口 |
javax.swing.text | 提供类 HTMLEditorKit 和创建 HTML 文本编辑器的支持类 |
javax.swing.tree | 提供处理 javax.swingJTree 的类和接口 |
javax.swing.event 包中定义了事件和事件监听器类,javax.swing.event 包与 AWT 的 event 包类似。Java.awt.event 和 javax.swing.event 都包含事件类和监听器接口,它们分别响应由 AWT 组件和 Swing 组件触发的事件。
例如,当在树组件中需要节点扩展(或折叠)的通知时,则要实现 Swing 的 TreeExpansionListener 接口,并把一个 TreeExpansionEvent 实例传送给 TreeExpansionListener 接口中定义的方法,而 TreeExpansionListener 和 TreeExpansionEvent 都是在 swing.event 包中定义的。
虽然 Swing 的表格组件(JTable)在 javax.swing 包中,但它的支持类却在 javax.swing.table 包中。表格模型、图形绘制类和编辑器等也都在 javax.swing.table 包中。
与 JTable 类一样,Swing 中的树 JTree(用于按层次组织数据的结构组件)也在 javax.swing 包中,而它的支持类却在 javax.swing.tree 包中。javax.swing.tree 包提供树模型、树节点、树单元编辑类和树绘制类等支持类。
Swing 容器
创建图形用户界面程序的第一步是创建一个容器类以容纳其他组件,常见的窗口就是一种容器。容器本身也是一种组件,它的作用就是用来组织、管理和显示其他组件。
Swing 中容器可以分为两类:顶层容器和中间容器。
顶层容器是进行图形编程的基础,一切图形化的东西都必须包括在顶层容器中。顶层容器是任何图形界面程序都要涉及的主窗口,是显示并承载组件的容器组件。在 Swing 中有三种可以使用的顶层容器,分别是 JFrame、JDialog 和 JApplet。
- JFrame:用于框架窗口的类,此窗口带有边框、标题、关闭和最小化窗口的图标。带 GUI 的应用程序至少使用一个框架窗口。
- JDialog:用于对话框的类。
- JApplet:用于使用 Swing 组件的 Java Applet 类。
中间容器是容器组件的一种,也可以承载其他组件,但中间容器不能独立显示,必须依附于其他的顶层容器。常见的中间容器有 JPanel、JScrollPane、JTabbedPane 和 JToolBar。
- JPanel:表示一个普通面板,是最灵活、最常用的中间容器。
- JScrollPane:与 JPanel 类似,但它可在大的组件或可扩展组件周围提供滚动条。
- JTabbedPane:表示选项卡面板,可以包含多个组件,但一次只显示一个组件,用户可在组件之间方便地切换。
- JToolBar:表示工具栏,按行或列排列一组组件(通常是按钮)。
在 Java 程序中容器类都是继承自 Container 类。中间容器和顶层容器在,AWT 包和 Swing 包中继承 Container 类的继承关系,如图 2 所示。
图2 容器类组织结构图
【Swing】了解Swing,Swing是什么?相关推荐
- swing学习一(swing介绍、swing样例、布局管理器)
图形用户界面开发(gui) 在学习swing前,我们需要了解这样几个概念:awt.swing.swt.Jface. sun公司提供了一个跨平台GUI开发工具包awt(抽象窗口工具箱Abstract W ...
- java swing边框_Java Swing边框
Java Swing教程 - Java Swing边框 Swing允许我们在组件的边缘绘制边框.有不同种类的边界: Bevel Border Soft Bevel Border Etched Bord ...
- (swing读书笔记)Swing Look And Feel(3)
(swing读书笔记)Swing Look And Feel(3) By cszhao1980 六.UIResource UIResource是个空接口,它的目的是为标识一种身份,即是否为UI Res ...
- (swing读书笔记)Swing Look And Feel(2)
(swing读书笔记)Swing Look And Feel(2) By cszhao1980 三. UI defaults UIDefaults内部维护了一张巨大的Hashtable, 记 ...
- (swing读书笔记)Swing Look And Feel(4)
(swing读书笔记)Swing Look And Feel(4) By cszhao1980 八.MetalLookAndFeel的功能增强 Swing对它默认的跨平台L&F提供了功能的增强 ...
- java swing 模糊查找_Java Swing 编程 JComboBox 实现模糊查找功能。
废话不多说,直接上代码.代码如下: import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util ...
- 什么是java swing_Java Swing简介:Swing是什么?
Swing是新一代的图形界面工具.使用 Swing 来开发图形界面比 AWT 更加优秀,因为 Swing 是一种轻量级组件,它采用纯Java实现,不再依赖于本地平台的图形界面,所以可以在所有平台上保持 ...
- java swing 右键_java swing制作右键菜单
java swing中如何实现右键菜单呢? 直接上代码: /*** java * 设置弹出菜单 * @param qrResultLabel */ private void setPopupMe ...
- java swing 树_Java Swing JTree 树形
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1.概念 官方JavaDocsApi:javax.swing.JTree JTree 树.将分层数据显示为树状轮廓的组件. 树由若干节点,通过层级关系组成 ...
- java swing 传值_java swing 窗体之间怎么传值?
展开全部 传递一个对象过去32313133353236313431303231363533e58685e5aeb931333332623366:package org.somken; import j ...
最新文章
- FileSystem close Exception
- python csv数据处理_python处理csv数据的方法
- 中国新疆保险产业发展动态与投资机遇研究报告2022版
- 并发编程之进程池,线程池 和 异步回调,协程
- 每天一道Java题[4]
- php留言板上传图片,thinkphp3.2.3留言板带管理没有后台ajax上传图片功能
- win7下MongoDB集群告别裸奔
- c语言怎么添加搜索功能,C语言实现二叉搜索树的创建、插入、删除和查找
- 通过python和websocket构建实时通信系统[扩展saltstack监控]
- 符号函数的作用及Matlab中的基本用法
- 将多个Excel文件合并成一个有多个sheet的Excel文件
- 怎样配置更完美的图形工作站
- 什么促使计算机图形学发展,计 算 机 图 形 学 的 过 去、 现 在 和 未 来.doc
- C++的替代:微软如何使用rust?
- 新浪微博开发平台地址 http://open.weibo.com/
- 力荐!50 个最实用的免费机器学习数据集
- python温度转换_一步一步教会你,详解用Python实现一个简易的温度换算GUI小工具...
- CSDN社区运营午餐会第1期 – 人在驴途
- Beautiful english sentences,just for you.
- 如何将MATLAB程序插入到.net(C#)中(流程以及常见错误总结)
热门文章
- 设计模式——设计模式中英文对照
- ESP8266/ESP-01固件下载方法
- 华为5.0以上设备(亲测有效)激活xposed框架的流程
- 阿里八八“好记”测试报告
- Word替换重复的内容
- css段落首行缩进,文字间距
- linux裸设备读写,Linux裸设备管理学习笔记
- Ueditor详细配置说明文档
- 佛青云怎么过鸿蒙,神都夜行录鸿蒙之境策驱三运高级怎么打 鸿蒙之境策驱三运高级打法攻略...
- github snap android,轻量级的viewpager指示器