什么是java swing_Java Swing简介:Swing是什么?

什么是java swing_Java Swing简介:Swing是什么?Swing是新一代的图形界面工具。使用Swing来开发图形界面比AWT更加优秀,因为Swing是一种轻量级组件,它采用纯Java实现,不再依赖于本地平台的图形界面,所以可以在所有平台上保持相同的运行效果,对跨平台支持比较出色。除此之外,Swing提供了比AWT更多的图形界面组件,因此可以开发出美观的图形界面程序。Swing类库结构Swing组件都采用MVC(Model-Vi…

大家好,又见面了,我是你们的朋友全栈君。

Swing是新一代的图形界面工具。使用 Swing 来开发图形界面比 AWT 更加优秀,因为 Swing 是一种轻量级组件,它采用纯Java实现,不再依赖于本地平台的图形界面,所以可以在所有平台上保持相同的运行效果,对跨平台支持比较出色。除此之外,Swing 提供了比 AWT 更多的图形界面组件,因此可以开发出美观的图形界面程序。

Swing 类库结构

Swing 组件都采用 MVC(Model-View-Controller,即模型-视图-控制器)的设计,实现 GUI 组件的显示逻辑和数据逻辑的分离,从而允许程序员自定义 Render 来改变 GUI 组件的显示外观,以提供更多的灵活性。

Swing 围绕 JComponent 组件构建,JComponent 则由 AWT 的容器类扩展而来。Swing 组织结构如图 1 所示。

81b54b118863d54cdc19df3847e738f2.png

图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 包。表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 所示。

1cfecc65e42a43297704b56adb9cc15f.png

图2 容器类组织结构图

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/java/1071.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156636.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • springMVC执行流程及原理

    springMVC执行流程及原理spring的MVC执行原理1.springmvc将所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求进行真正的处理工作。2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.3.DispatcherServlet请请求提交到目标Controller4.Controller进行

    2022年6月28日
  • C#FindWindowEx参数详解[通俗易懂]

    C#FindWindowEx参数详解[通俗易懂]FindWindowEx参数详解本函数的其他内容在网络上都比较多,这里主要说一下它的参数设置和搜索结果的区别。函数功能:在窗口列表中寻找与指定条件相符的第一个子窗口。该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始。在查找时不区分大小写。函数原型:HWNDFindWindowEx(HWNDh

    2022年6月1日
  • Python中获取当前日期的格式

    Python中获取当前日期的格式

    2021年11月26日
  • python数据可视化第三方库有哪些_数据可视化!看看程序员大佬都推荐的几大Python库…

    python数据可视化第三方库有哪些_数据可视化!看看程序员大佬都推荐的几大Python库…数据可视化是数据分析中极为重要的部分,而数据可视化图表(如条形图,散点图,折线图,地理图等)也是非常关键的一环。Python作为数据分析中最流行的编程语言之一,有几个库可以创建精美而复杂的数据可视化,允许分析人员和统计人员通过方便地在一处提供界面和数据可视化工具而轻松地根据其规范创建可视数据模型!MatplotlibMatplotlib是Python的数据可视化库和二维绘图库,它是Python社区…

    2022年5月2日
  • 如何配置pytorch_pytorch如何下载

    如何配置pytorch_pytorch如何下载1.好像不支持python3.8。直接从setting里面安装时不行的,按其它教程(https://blog.csdn.net/lyz21/article/details/104295042)从官网https://pytorch.org/get-started/locally/,拷贝链接用pip下载,一直报找不到版本。后来发现,python3.8的原因,改成python3.7可以了,但会一直连接超时。2.发现要下载的其实是这两个文件:点开下面的两个链接,用下载软件下载了,我下到了e盘,直接pip

    2022年10月31日
  • 列存储索引1:初识列存储索引

    列存储索引1:初识列存储索引

    2021年11月25日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号