Java界面设计 Swing(1)

Java界面设计的用途

开发者可以通过Java SE开发丰富并且强大的具有图形界面的桌面应用程序。也可以设计一些提高效率的工具软件,帮助自己处理机械性工作。

Java 的图形界面工具包,可以用于工具类软件开发、管理类软件开发、通用客户端开发、银行客户端软件开发、Eclipse 插件开发等方向。在许多知名的大型软件中,都能够见到 Java 的身影,如某些版本的 Photoshop、思维导图软件、Eclipse、IDEA 开发环境等。

Java有多套GUI工具包,因为没有一个可以满足所有的要求。 Java的GUI工具包包含AWT, Swing和SWT,每个工具包都有各自的优缺点,开发者可以根据自己的需求和目标来选择适当的工具包。

AWT 简介

Abstract Windows Toolkit(AWT)是最原始的 Java GUI 工具包。AWT的主要优点是,它是每个Java版本的标准配置,包括早期的Web浏览器中的Java实现;并且非常稳定。这意味着我们不需要单独安装这个工具包、在任何一个Java运行环境中都可以使用它。

它是一个非常简单的具有有限 GUI 组件、布局管理器和事件的工具包(如窗体、文本标签、按钮、菜单等)。这是因为Sun公司决定为AWT使用一种最小公分母的方法,只提供所有操作系统都有的控件。因此它只会使用为所有Java主机环境定义的GUI组件。

由于AWT要依赖于主机GUI的对等体(peer)控件(其中每个AWT组件都有一个并行的主机控件或者对等体)来实现这个GUI,这个GUI的外观和行为在不同的主机上会有所不同。这与Java的“一次编写,处处运行”理念冲突,所以AWT有局限性。

Swing 简介

Java Swing 是 Java Fundation Classes ( JFC ) 的一部分,它试图解决AWT的缺点。在 Swing 中,Sun 开发了一个经过仔细设计的,灵活而强大的GUI工具包。Swing 是在 AWT 组件基础上构建的。Swing 使用了  AWT 的事件模型和支持类,例如 Colors、Images 和 Graphics。Swing 组件、布局管理器以及事件比  AWT 提供的组件集更为广泛,完全满足各种开发需求。

为了克服在不同主机上行为也会不同的缺点,Swing 对主机控件的依赖性降至了最低。实际上,Swing只为诸如窗口和框架之类的顶层组件使用对等体, 好像是JFrame,JWinodows,JDialog(记不太清了,好像是这几个)是调用本地操作系统的控件。大部分组件( JComponent 及其子类)都是使用纯Java代码来模拟的。这意味着Swing天生就可以在所有主机之间很好地进行移植。因此,Swing通常看起来并不是本地程序。实际上,它有很多外观,有些模拟不同的主机外观,有些则提供了独特的外观。

Swing 对基于对等体的组件使用的术语是重量级(Heavyweight),对于模拟的组件使用的术语是轻量级(llightweight)。实际上,Swing 可以支持在一个GUI中混合使用重量级组件和轻量级组件,例如在一个 JContainer 中混合使用AWT和Swing控件。 Swing 具有以下优势:

  基于 MVC 结构

  可编程外观

  呈现器与编辑器

  支持以任意顺序构建 GUI

  可访问性

  支持自动销毁

  是标准 Java 的一部分

SWT 简介

IBM更喜欢AWT的实现机制,做出了SWT,SWT采用的是最大公倍数的做法。SWT大部分都是用的本地操作系统的控件,一些在windows里有的控件可能在linux下没有,对这种控件才采用自己绘制的方式。SWT采用类似JAVA虚拟机的方式,在不同的平台,有不同的开发包,我们写的java代码是一样的,但不同平台下看起来外观是不一样的,但性能提升很高,据说和C++做的界面速度差不多:)

SWT 也是基于对等体实现的,在这点上与 AWT 相似。它克服了 AWT 所面临的 LCD 的问题,方法如下:它定义一组控件,它们可以用来构建大部分办公应用程序或者开发者工具,然后可以按照逐个主机的原则,为特定主机所没有提供的空间创建模拟控件(这与 Swing 类似)。对大部分现代主机来说,几乎所有的控件都是基于本地对等体的。这意味着基于 SWT 的 GU I既具有主机的外观,又具有主机的性能。这样就避免了使用 AWT 和 Swing 而引起的大部分问题。特定的主机具有一些低级功能控件,因此 SWT 提供了扩充(通常是模拟的)版本(通常使用 “C” 作为名字中的第一个字母),从而可以产生更一致的行为。

在SWT中,对等体只是主机空间上的一些封装程序而已。这意味这SWT应用程序实际上是一个主机应用程序,它必然会全部继承主机的优缺点。这还意味着SWT不能完全实现 “一次编写,处处运行” 的目标;它更像是一种 “一次编写,处处测试” 的解决方案。这就是说,SWT景观不如Swing那么优秀,但是它在创建可移植解决方案方面是杰出的。SWT具有以下特点:

  不支持GUI自动销毁

  仅支持自顶向下构建GUI

  对Java2D的支持不够完善

  不属于标准Java的一部分

使用哪一个GUI工具包?

Swing是最灵活,强大的GUI工具包,所以在界面开发中,首选Swing, 他可以胜任绝大多数开发工作。

只有一种场合不适用于Swing: 在使用SWT开发的程序上继续编写界面,比如为Eclipse开发插件(因为Eclipse是基于SWT构建的)。SWT与Swing不兼容,它们不能混合使用。

引一名话:this is equivalent to asking whether a harmmer is better than a screw driver,of course ,a hammer wieldded with sufficient force can probably drive a screw into a wall ,and the butt of a screw can be used in a pinch to knock in a nail. However, a good carpenter keeps both harmer and screw drivers in her tool box and will use the tool that is appropriate for the job at hand.

个人感觉以前 Java 做界面完全没有优势,从外观到性能(我很喜欢Swing的look and feel,可以改变风格),SWT的出现改变了性能上的缺点,再加上JFace,及Eclipse的RCP,我还是倾向于用SWT。

时间: 2024-10-28 10:41:28

Java界面设计 Swing(1)的相关文章

java界面设计(swing)

1.Swing基本组件 窗体控件 JFrame.容器控件 JPanel .标签控件 JLabe.按钮控件 JButton.文本框控件 JTextField 与 JTextArea(注意JScrollPanel的使用). 单选与复选控件 JRadioButton 与 JCheckBox . 列表控件 JList .下拉菜单 JComboBox.进度条控件 JProgressBar.数字调节控件 JSpinner 2.Swing 布局管理器

Java界面设计的用途

一.Java界面设计的用途: JavaSE(Java Standard Edition)即Java标准版,一般也可以理解作Java桌面版.开发者可以通过JavaSE开发丰富并且强大的具有图形界面的桌面应用程序. Java的图形化界面工具包,可以用于工具类软件开发.管理类软件开发.通用客户端开发.银行客户端软件开发.Eclipse插件开发等方向.在许多知名的大型软件中,都能见到Java的身影,如某些版本的Photoshop.思维导图软件.Eclipse.IDEA开发环境等. 开发者也可以使用Jav

Java界面设计

---------------siwuxie095 Java SE(Java Standard Edition) 即 Java 标准版, 一般也理解作 Java 桌面版 开发者可以通过 Java SE 开发丰富并且强大的具有图形界面的桌面应用程序 「本人目前(2017/4/1)使用的是 Java EE,Version Neon.1 Release 4.6.1」 Java 的图形界面工具包,可以用于工具类软件开发.管理类软件开发. 通用客户端开发.银行客户端开发.Eclipse插件开发等方向 在许

java,界面设计(请高手支招)

import javax.swing.*; public class MyFrame extends JFrame{ piublic MyFrame(){ this.setTitle("这是我第一个窗口"); this.setSize(300,300); this.setResizable(false); this.setVisible(true); } public static void main(String args[]){ MyFrame frame1=new MyFrame

java(课程设计之记事本界面部分代码公布)

代码:涉及记事本的一些界面......!! 1 /* 2 *java课程设计之记事本(coder @Gxjun) 3 * 编写一个记事本程序 4 * 要求: 5 * 用图形用户界面实现. 6 * 能实现编辑.保存.另存为.查找替换等功能. 7 * 提示:使用文件输入输出流. 8 */ 9 package project; 10 11 import javax.swing.*; 12 import java.awt.*; 13 import java.awt.event.*; //引用类设置触发事

Java图形化界面设计——容器(JFrame)

Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构,现在就进入java图形化界面编程. 一.Java基本类(JFC) Java基本类(“JavaFoundationClasses”,JFC),由一些软件包组成.这些软件包主要包括下面一些应用程序接口(API): ·抽象窗口工具集(AWT)(1.1及以上版本). ·Swing构件. ·Java 2D应

三十三、Java图形化界面设计——布局管理器之null布局(空布局)

摘自http://blog.csdn.net/liujun13579/article/details/7774267 三十三.Java图形化界面设计--布局管理器之null布局(空布局) 一般容器都有默认布局方式,但是有时候需要精确指定各个组建的大小和位置,就需要用到空布局. 操作方法: 1)       首先利用setLayout(null)语句将容器的布局设置为null布局(空布局). 2)       再调用组件的setBounds(int x, int y, int width,int

三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)

摘自http://blog.csdn.net/liujun13579/article/details/7772491 三十一.Java图形化界面设计--布局管理器之GridLayout(网格布局) 网格布局特点: l  使容器中的各组件呈M行×N列的网格状分布. l  网格每列宽度相同,等于容器的宽度除以网格的列数. l  网格每行高度相同,等于容器的高度除以网格的行数. l  各组件的排列方式为:从上到下,从左到右. l  组件放入容器的次序决定了它在容器中的位置. l  容器大小改变时,组件

二十七、Java图形化界面设计——容器(JFrame)

摘自http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构,现在就进入java图形化界面编程. 一.Java基本类(JFC) Java基本类("JavaFoundationClasses",JFC),由一些软件包组成.这些