当前位置: 首页 > news >正文

java 什么是swing_Java-Swing是什么?

我很喜欢一个有背景动画特效的(登录或者注册等模板的)透明页面,能给我自身一种积极上进的震撼力

希望我能慢慢的理解swing(透明的小模块)到底怎么用

Swing 类库结构

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

4d649a8b214f1cb4e0a8a556682c30d6.png

从图 1 可以看出,Swing 组件除了 AbstmctButton 类之外都以 J 开头。Swing 容器组件直接继承 AWT 类库中的容器组件类,其他大部分组件都是继承 JComponet 组件。组件可以划分为容器组件和非容器组件,容器组件包括 JFmme 和 JDialog。其中 JComponent 定义了非容器类的轻量级组件(JBntton、JPanel、JMenu 等)。

Swing 包

Swing 类库由许多包组成,通过这些包中的类相互协作来完成 GUI 设计。其中,javax.swing 包是 Swing 提供的最大包,它包含将近 100 个类和 25 个接口。几乎所有 Swing 组件都在该包中。表 1 列出了常用的 Swing 包。

a88f7a024bd7adea03d600439d8bbd69.png

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 所示。

c091a67e6815819fe30bd996720eef5b.png

一堆不理解的,存着慢慢理解

---------------------------------------------------------------------------------------------------------------感谢到访!我只是喜欢编程,实现的功能呈现出来的效果很爽,一直爱编程!

相关文章:

  • java中的for循环例子_Java中使用增强for循环的实例方法
  • java 时间合并_时间段或时间点,合并。
  • mysql5.5.28安装详最后一个步骤时为啥一直转_【转】安装mysql sever 向导失败,最后一步无响应...
  • java actionperformed_java中的事件处理和java中actionPerformed方法的...
  • java代码生成xml_通过java代码生成XML格式文件
  • java fromobject 不能用_jsonobject.fromobject方法转换中出现的问题
  • java中注册的账号存储_java怎么把注册的数据保存到登录里面去?
  • java 剔除节假日_java Android 算一定业务规定的工作日(除去法定节假日、调休周末上班日)代码copy直接用...
  • bash java_如何从Bash Shell脚本正常关闭Java服务?
  • 基岩与java_全面对比《我的世界》基岩版和Java版本的不同,老玩家都清楚
  • java邮件登录系统设计_基于Java web的邮件管理系统的设计与实现(含源文件).doc
  • java读取c 整型_C:从cin读取整数行
  • 蓝桥杯乘法运算java_蓝桥杯java 算法训练 最大的算式
  • java中stream转成FILE_java中FileOutputStream()和FileWriter()的不同 (转)
  • java中软删除_java – Spring Data Rest – 软删除
  • php的引用
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • extjs4学习之配置
  • Github访问慢解决办法
  • mysql 数据库四种事务隔离级别
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • React中的“虫洞”——Context
  • SOFAMosn配置模型
  • TCP拥塞控制
  • Travix是如何部署应用程序到Kubernetes上的
  • 开源地图数据可视化库——mapnik
  • 自动记录MySQL慢查询快照脚本
  • ​iOS实时查看App运行日志
  • ​如何在iOS手机上查看应用日志
  • !!java web学习笔记(一到五)
  • #mysql 8.0 踩坑日记
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (ZT)薛涌:谈贫说富
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (一)SpringBoot3---尚硅谷总结
  • (转)项目管理杂谈-我所期望的新人
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .NET : 在VS2008中计算代码度量值
  • .NET 8.0 中有哪些新的变化?
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET项目中存在多个web.config文件时的加载顺序
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • @EventListener注解使用说明
  • @GetMapping和@RequestMapping的区别
  • @GlobalLock注解作用与原理解析
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [C++]unordered系列关联式容器
  • [DAU-FI Net开源 | Dual Attention UNet+特征融合+Sobel和Canny等算子解决语义分割痛点]
  • [go 反射] 进阶
  • [Java性能剖析]Sun JDK基本性能剖析工具介绍
  • [jQuery]10 Things I Learned from the jQuery Source