📄 s01.htm
字号:
<SCRIPT LANGUAGE="JavaScript" SRC="/-fs0/sys/pop-up.js"></SCRIPT><SCRIPT LANGUAGE="JavaScript" SRC="/-fs0/sys/pop-up-all.js"></SCRIPT><html><head><title>易都网--Java 2 图形设计卷Ⅱ:SWING</title><LINK rel="stylesheet" href="../../../_public/javaa.css"><meta http-equiv="Content-Type" content="text/html; charset=GBK"><script language="JavaScript" src="../../../_public/javaa.js"></script><meta name="keywords" content="Java,JSP,ASP,PHP,J2EE,EJB,JavaScript,C/C++,ASM,CSS,HTML,XML,网络安全,MySQL,ACCESS"></head><body bgcolor="#FFFFFF"><table border=0 cellpadding=0 cellspacing=0 width="100%"> <tbody> <script language="javascript">print2()</script> <tr> <td width="100%"> <table bgcolor=#EEEEEE border=0 cellpadding=3 cellspacing=0 width="100%"> <tbody> <tr> <td class=f1 id=thetd width="100%"> <p>[<a href="index.html" target="_self">目录</a>][上一页][<a href="s02.htm" target="_self">下一页</a>]</p> <p align="center"><b>第1章 简 介</b></p> <p> Java的基础类(JFC)是开发图形用户界面的API集。Java的基础类包括以下API:<br> ·抽象窗口工具包(版本1.1及以后的版本)。<br> ·2D API。<br> ·Swing组件。<br> ·可访问性API。<br> 抽象窗口工具包(Abstract Window Toolkit,AWT)是Java开发用户界面最初的工具包。AWT是建立JFC的主要基础,《Java 2图形设计,卷Ⅰ:AWT》对AWT有详细的介绍。<br> 2D API提供了AWT所缺乏的附加图形功能。例如,AWT对图形操作只提供了一种规格的笔——即一个像素大小的正方形。而2D API除提供了不同大小的笔外,还提供了丰富的二维着色能力。《Graphic Java2,Volume IV:2D API》一书中对2D API有详细的介绍。<br> Swing是建立在AWT之上的(参见1.2节“轻量组件与重量组件的比较”中对轻量组件与重量组件比较的讨论)、包括大多数轻量组件的组件集。除提供了AWT所缺少的、大量的附加组件外,Swing还提供了替代AWT重量组件的轻量组件。Swing还包括了一个使人印象深刻的、用于实现包含插入式界面样式等特性的图形用户界面的下层构件。因此,在不同的平台上,Swing组件都能保持组件的界面样式特性,如双缓冲、调试图形和文本编辑包等。<br> 可访问性(Accessibility)API是一个类集,其中的类使Swing组件能够与用于残疾用户的援助技术交互。JFC还包括许多可访问性工具,这些工具与可访问性API联合使用。 </p> <p><b><a name="1.1"></a>1.1 Swing的历史</b></p> <p> 要了解Swing,首先必须了解AWT,AWT是Swing的基础。<br> Java的发展速度超出了人们的想象,Java API中最可视的部分——API突然成为了人们关注的焦点。遗憾的是,原来的AWT不能满足发展的需要。<br> 原来的AWT不是为许多开发人员使用的、功能强大的用户界面(UI)工具包而设计的,其设计目的是支持开发小应用程序中的简单用户界面。例如,原来的AWT缺少许多面向对象UI工具包中所能见到的特性,例如,剪贴板、打印支持和键盘导航等特性在AWT中都不存在。原来的AWT甚至不包括弹出式菜单或滚动窗格等基本特性,而弹出式菜单和滚动窗格是开发现代用户界面的两个基本元素。<br> 此外,AWT的下层构件还有严重的缺陷。人们使AWT适应基于继承的、具有很大伸缩性的事件模型。甚至更糟,基于对等组件(peer)的体系结构也被用于AWT,该体系结构注定要成为AWT的致命弱点。<br> 为了尽快推向市场和保持本地的界面样式,于是产生了基于对等组件的体系结构,而该体系结构注定是要失败的。对等组件是完成薄弱的AWT对象所委托任务的本地用户界面组件。对等组件负责完成所有的具体工作,包括绘制自己、对事件做出反应等,这使得AWT组件除了在适当的时间与其对等组件交互外无事可做。由于AWT类中是较复杂的本地对等组件的外壳,所以,AWT的早期开发人员能在最快的时间(原来的AWT是在不足六个星期的时间内开发出来的。)内创建组件。例如,java.awt.Panel类只包含十二行代码。 <br> 另外,对等组件的设计也有严重的缺点。首先,在大多数平台上,对等组件都是在本地窗口中绘制的。每个组件一个本地窗口实在不能得到高性能,为此,含有大量AWT组件的小应用程序付出了很高的性能代价。<br> 把不同平台上的本地对等组件硬塞进Java框架中也是一个问题,使这些AWT组件跨平台的表现一致是完全不可能的。结果,不但没有实现急需的新组件,而且开发时间都浪费在修补对等组件的错误上和不兼容问题上了。<br> 更糟的是,AWT有很高的错误发生率。于是,第三方开始提供他们自己的工具包,这些工具包提供了更可靠的下层构件并提供了比AWT更多的功能。这些工具包之一是Netscape的Interner基础类(IFC),IFC是一组建立在NEXTSTEP中的用户界面工具包概念基础上的一组轻量类。IFC组件不是对等的,在许多方面胜过了AWT组件。IFC还吸引了更多的开发人员加盟。<br> 由于认识到Java领域很可能在标准用户界面工具包问题上出现分裂局面,Javasoft和Netscape达成了一个交易,共同实现Java基础类(Apple公司和IBM公司也参加了JFC的开发)。Netscape开发人员与Swing工程师一起合作,以便把大部分的IFC的功能嵌入到Swing组件中。<br> 起初打算让Swing类似于Netscape的IFC。然而,随着时间的推移。在增加了插入式界面样式等特性并修改了设计之后,Swing大大地偏离了它原来的目标。随着Swing1.1版本的推出,虽然大量的IFC技术仍然嵌在Swing中,但是,Swing与IFC相似的部分已大部分消失了。今天,在一个功能全面的用户界面工具包中,Swing提供了AWT和IFC中最优秀的成份。 </p> <p><b> <a name="1.2"></a>1.2 轻量组件与重量组件的比较</b></p> <p> 轻量组件首次出现在AWT1.1版本中。AWT最初只包括与本地对等组件相关联的重量组件,这些组件在它们自己的本地不透明窗口中绘制。<br> 相反,轻量组件没有本地对等组件,而且在它们的重量容器的窗口中绘制。<br> 由于轻量组件不在本地不透明的窗口中绘制,因此,它们可以有透明的背景。透明的背景使显示的轻量组件可以是非矩形的,虽然所有组件(重量的或轻量的)都有一个矩形的边框。<br> Swing组件几乎都是轻量组件,那些顶层容器:窗体,小应用程序、窗口和对话框除外。因为轻量组件是在其容器的窗口中绘制的,而不是在自己的窗口中绘制的,所以轻量组件最终必须包含在一个重量容器中。因此,Swing的窗体、小应用程序、窗口和对话框都必须是重量组件,以便提供一个可以在其绘制Swing轻量组件的窗口。 </p> <p><b> <a name="1.3"></a>1.3 Swing组件</b></p> <p> Swing包含250多个类,是组件和支持类的集合。Swing提供了40多个组件,是AWT组件的四倍。除提供替代AWT重量组件的轻量组件外,Swing还提供了大量有助于开发图形用户界面的附加组件。</p> <p><b> <a name="1.3.1"></a>1.3.1 AWT的替代组件</b></p> <p> 图1-1展示了用于替代AWT重量组件的Swing轻量组件。其中许多组件与它们所替代的AWT组件几乎是源代码兼容的。这使得替换AWT组件的工作相当简单。<br> 除模仿AWT组件所提供的功能外,几乎所有的Swing替代组件都有其他一些特性。例如,Swing按钮和标签可显示图标和文本,而AWT按钮和标签只能显示文本。<br> 图1-1中所示的所有组件均使用Windows的界面样式(图略)。</p> <p><b> <a name="1.3.2"></a>1.3.2 Swing增加的组件</b></p> <p> 除提供AWT重量组件的替代组件外,Swing还提供了许多其他组件,如表格、树、定制对话框等。图1-2示出了一些新的Swing组件(图略)。</p> <p><b> <a name="1.4"></a>1.4 J组件</b></p> <p> 如前所述,Swing包括250多个类,其中有些是UI组件,有些是支持类。为了把UI组件和支持类区分开,Swing组件的名字以J开头。表1-1列出了Swing提供的J组件。用斜体字表示的组件是AWT组件的替代组件。<br> 表1-1 Swing UI组件<br> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━<br> <b>组件类 描述</b><br> ─────────────────────────────────<br> JApplet Java.applet.Applet类的扩展,它含有JRootPane的一个实例<br> <i>JButton</i> 能显示文本和图形的按钮,它是AWT按钮组件的替代组件<br> <i>JCheckBox</i> 能显示文本和图形的复选框,它是AWT选择组件的替代组件<br> <i>JCheckBoxMenuItem</i> 一个复选框菜单项,它是AWT的复选框菜单项组件的替代组件<br> <i>JComboBox</i> 带下拉列表的文本框,它是AWT选择组件的替代组件<br> JComponent 所有轻量J组件的基类<br> JDesktopPane 内部窗体的容器<br> <i>JDialog</i> Swing对话框的基类,它扩展了AWT Dialot类<br> JEditorPane 用于编辑文本的文本窗格<br> <i>JFrame</i> 扩展java.awt.Frame的外部窗体<br> JInternalFrame 在JDesktopPane中出现的内部窗体<br> <i>JLabel</i> 可显示文本和图标的标签,它是AWT标签组件的替代组件<br> JLayeredPane 能够在不同层上显示组件的容器<br> <i>JList</i> 显示选项列表的组件,它是AWT列表组件的替代组件<br> <i>JMenu</i> 菜单条中显示的一个菜单,它是AWT菜单组件的替代组件<br> <i>JMenuBar</i> 用于显示菜单的菜单条,它是AWT菜单条组件的替代组件<br> <i>JMenuItem</i> 菜单项,它是AWT菜单项组件的替代组件<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -