SWING简介

Swing是一个为Java设计的GUI工具包。Swing是JAVA基础类的一部分。Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表。

Swing提供许多比AWT更好的屏幕显示元素。它们用纯Java写成,所以同Java本身一样可以跨平台运行,这一点不像AWT。它们是JFC的一部分。它们支持可更换的面板和主题(各种操作系统默认的特有主题),然而不是真的使用原生平台提供的设备,而是仅仅在表面上模仿它们。这意味着你可以在任意平台上使用JAVA支持的任意面板。轻量级元件的缺点则是执行速度较慢,优点就是可以在所有平台上采用统一的行为。

历史

互联网基础类(IFC)是网景公司最初为Java开发的图形库,第一次发布于1996年12月16日。

在1997年4月2日,太阳公司和网景公司宣称他们要将IFC和其他技术合并形成Java基础类。作为IFC最初提供组件的附加品,Swing引进了一个机制:在不改变大量的程序代码前提下允许程序中每个组件面的变化。支持可更换面板技术的引入允许Swing组件在模拟原生组件外观的同时又保持了平台独立的优点。

架构

Swing是一个基于Java的跨平台MVC框架。使用单线程模式。此框架还在代码结构层和图形渲染层之间插入了一个抽象层。

可扩展性

Swing使用了高度模块化的架构,可以通过接口的方式使用各种定制框架来扩展Swing。用户可以通过Java的继承机制重写原始的组件来实现自己的代码。

Swing是一个基于组件的框架,所有的组件都是从javax.swing.JComponent类继承来的。Swing对象通过异步方式发送事件,具有边界属性,并且会响应该组件的一系列方法。Swing组件是Java Beans组件,和Java Beans组件架构完全保持一致。

可定制性

Swing提供了可编程渲染模型,使用户可以对渲染细节进行控制。一般来看,Swing组件的视觉效果是一些通用元素的组合,比如外框、边距、窗口装饰等等。典型的情况是,用户通过编写代码,指定边框、颜色、背景、透明度等属性来定制一种通用Swing组件(如JTable)。核心组件则会用这些定制的属性来进行绘制。此外,也完全可以制作出非常特殊的GUI控件或是高度自定义的视觉效果。

可配置性

Swing高度基于运行时的机制以及其间接的组合模式使得它可以在运行时响应对其底层设置的改变。例如,一个Swing的应用程序能在运行时动态地改变界面。此外,用户还能随时应用他们自己的Look And Feel。Look And Feel能够统一地改变当前程序的组件外观,而不用修改任何代码。

同AWT的关系

Java的早期版本以来,抽象视窗工具包为用户界面组件提供了平台独立的API。在AWT中,每个组件都由一个原生的等同组件生成和控制,这个原生组件是由当前的图形视窗系统决定的。

与此相对,Swing组件经常被描述为轻量级的,因为它们不需要操作系统本身所带视窗工具包的原生资源来生成。

Swing API的大部分是AWT的补充扩展而不是直接的代替。Swing用来绘制轻量级组件的核心渲染功能是由Java2D提供的,这是AWT的一部分。然而,轻量级和重量级组件在同一个应用中使用会导致Z-order不兼容。

同SWT的关系

标准器件工具包 (SWT)是一个最初由IBM开发的工具包,现在由Eclipse基金会维护。SWT的实现同重量级的组件AWT有更多的共同之处。这样的好处是运行开销同所在平台的原生视窗工具包更为接近。

SWT的到来使得Java桌面的开发者们分离为SWT的支持者和Swing的支持者。在6.0版Java中,Swing的新修补专注于同原生视窗平台的逼真度,这可能会直接解决这个问题。

文章列表

Swing使用JEditorPane显示HTML内容

  • 发布于
  • 2015-01-17 18:21:06
  • 0次阅读
  • 0条评论
Swing提供了方便的手段进行界面元素的布局,但是在进行复杂样式布局的时候,使用HTML+CSS比直接使用Swing的界面元素进行布局要方便很多,本文介绍在JEditorPane中使用HTML+CSS布局界面的基本方法,并且还介绍了JEditorPane如何响应HTML中的超链接事件...查看全文>>

通过重载给JPanel增加背景图片

  • 发布于
  • 2014-11-30 15:51:40
  • 0次阅读
  • 0条评论
为了使我们的应用程序界面更加美观,Swing默认提供的JPanel往往无法满足我们的要求,这时候我们可以考虑给JPanel增加背景图片。本实例提供的方法是对JPanel进行重载,在对应的paintComponent函数中diaoy实现背景图的绘制。...查看全文>>

Swing实现鼠标拖动移动窗体

  • 发布于
  • 2014-11-29 19:16:04
  • 0次阅读
  • 0条评论
不同操作系统通常会有不同的标题栏和关闭按钮风格,为了保证我们的程序在各操作系统显示风格保持一致,有时候我们需要隐藏窗体的标题栏和边框,这可以使用Frame的成员函数setUndecorated实现。没有标题栏的窗体默认不支持鼠标拖动移动窗体,这就需要我们针对窗体添加对应的监听器。通常包含一个鼠标监听器(MouseListener)和一个鼠标移动监听器(MouseMotionListener)...查看全文>>

Swing按钮控件(JButton)重绘

  • 发布于
  • 2014-11-29 13:51:31
  • 0次阅读
  • 0条评论
进行界面设计的时候,有时需要设计一些特殊的按钮,如音乐播放器的原型,三角形按钮。如果Swing提供的默认按钮无法满足我们要求,我们就需要对按钮控件(JButton)进行重绘。...查看全文>>

Swing开发用户界面时不同事件处理方法优劣对比

  • 发布于
  • 2014-07-16 22:16:38
  • 0次阅读
  • 0条评论
监听用户事件通常我们有两种方法实现:第一种方法是只利用一个监听器以及多个if语句来决定是哪个组件产生的事件;第二种方法是使用多个内部类来响应不同组件产生的各种事件,通常我们使用第二种方法比较方便。第二种方法的具体实现又分两种方式,一种是匿名内部类,一种是一般内部类。...查看全文>>

Java用户界面时使用Swing开发不确定进度条

  • 发布于
  • 2014-07-16 21:32:42
  • 0次阅读
  • 0条评论
进度条在实现任务状态提示的时候非常实用,本文介绍一个Java使用Swing开发进度条的例子。该例子介绍了Swing非确定性进度条的使用例子,包含一个主线程(Thread)和两个新建的线程(Thread),处理介绍Swing开发用户界面时进度条(JProgressBar)的用法,该例子也介绍了Java开发时线程的创建和启动方法...查看全文>>

Swing各种用户提示对话框总结

  • 发布于
  • 2014-07-16 13:58:22
  • 0次阅读
  • 0条评论
Swing中提供了JOptionPane类来实现类似Windows平台下的MessageBox的功能,同样在Java中也有,利用JOptionPane类中的各个static方法来生成各种标准的对话框,实现显示出信息、提出问题、警告、用户输入参数等功能。这些对话框都是模式对话框...查看全文>>
pagelist