图形化用户界面(1):简介

男娘i 2023-03-04 08:21 106阅读 0赞
  1. java 1.0版本中的图形用户界面(graphical user interfaceGUI)库,其最初的设计目标是帮助程序员编写在所有平台上都能良好表现的GUI程序。遗憾的是,这个目标没有达到。事实是java 1.0提供的“抽象窗口工具包”(Abstract Window ToolkitAWT)在所有的系统上表现得都不太好,而且限制颇多;你只能使用四种字体,也不能访问存在于本地操作系统上的任何成熟的GUI组件。java 1.0AWT编程模型非常笨拙,并且不是面向对象的。
  2. java 1.1AWT中引入了事件模型后(这是一种更清晰的、面向对象的方法),以及随着JavaBeans的加入(它最初是为了使可视化编程环境的创建变得更容易而引入的构件编程模型),情况有所好转。java 2JDK 1.2)最终完成了从旧式的java 1.0 AWT到新标准的转换:“java基础类库”(JFC)几乎替换了所有内容,其中有关GUI的部分被称为“Swing”。Swing是一组易于使用、易于理解的JavaBeans,它能通过拖放操作(也可以通过手工编写)来创建合理的GUI程序。软件工业界里的“三次修订”规则(产品在修订三次之后才会成熟)看起来对编程语言也同样适用。
  3. 本章介绍了流行的Java Swing库,并且合理地假定Swing就是Sun最终的Java GUI库。注意,java中仍然存在某些AWT构件,有时你必须使用它们。
  4. 请注意,本章没有完整的介绍Swing提供的构件,对于提到的类,也不会讨论其所有方法。这里的讨论只是一个简介。Swing库非常庞大,本章的目的仅仅是为你打一个坚实的基础,让你熟悉其中的基本概念。如果你需要比这里介绍的更复杂的功能,只要深入研究,Swing几乎可以实现任何你想要的功能。
  5. 在学习Swing的时候将会发现:
  1. Swing与其他语言或开发环境相比,是一进已经改进了很多的编程模型(这里并不是说它就是完美的模型,只是说它向前迈进了一大步)。
  2. “GUI构造工具”(可视化编程环境)对于完整的Java开发环境而言,是必不可少的一方面。JavaBeans和Swing使用使得GUI构造工具能够在你用图形工具向窗体上放置组件的同时帮助你编写代码。这不仅在编写GUI程序期间加快了开发速度,而且它使得你可以进行更多的试验,从而具备能够通过试验产生更多设计的能力,继而得到更好的设计。
  3. Swing库设计上的简单性和合理性,使得你即使使用GUI构造工具而不是手工编写代码,得到的代码仍然是可读的;这就解决了以前使用GUI构造工具的一个大问题,就是很容易产生不可读的代码。

    Swing包含了所有你希望在流行的用户界面中看到的组件:从带图片的按钮,到树形和表格组件。这个库虽然庞大,但它的设计理念是:使用组件的复杂程度与任务的难度相匹配;如果任务很简单,你不用写很多代码,但对于复杂的工作,就要写复杂的代码才行。

    Swing中有一个非常令人称道的原则,称为“正交使用”(orthogonality of use)。意思是,一旦你理解了库中的某个通用概念,你就可以把这个概念应用到其他地方。比如标准的命名约定,我在编写例子的时候,常常在没有翻阅任何资料的情况下,仅仅通过方法的名称就能正确猜出其功能。从库的设计上来说,这是个相当好的特性。再比如,通常可以把一个组件“插”到另一个组件里,而且能正常工作。

    Swing自动支持键盘导航;可以不同鼠标运行Swing程序,而且这也不用额外编写代码。要支持滚动也不用费工夫;只要在把组件加入窗体之前,先把它包装进一个JScrollPane组件即可。像工具提示这样的功能,通常只需一行代码即可使用。

    为了可移植性,Swing完全用Java编写。

    Swing还支持一种非常先进的功能,称为“可插式外观”(pluggable look and feel),意思是用户界面的外观可以动态改变,以适应不同平台和操作系统下用户的习惯。你甚至可以(不过很难)自己发明一种外观。你可以在Web上找到一些外观。

一、applet

  1. java刚面世的时候,关于它的许多负面议论都来applet,它是一种可以在Internet上传递,并在Web浏览器中运行的程序(处于安全性,只能在所谓的沙盒内运行)。人们预料applet会成为Internet演化的下一个阶段,并且许多Java方面的的原创书籍都认为人们对java感兴趣的原因就是希望能够编写applet
  2. 由于各种原因,这种革命并未发生。产生这个问题的很大一部分原因在于大多数机器上并没有运行applet所必需的java软件,而为了运行某些偶然在Web碰见的东西,就去下载和安装10MB的包对大多数用户来说都是件不情愿的事情。许多用户甚至被这种想法吓坏了。java applet作为客户端应用传递系统,从来都没有实现大规模应用,尽管你仍旧会偶尔看到applet,但是实际上它们通常都被丢弃到计算科学的犄角旮旯里了。
  3. 然而,这并不意味着applet就不是一种有趣且具有重要价值的技术。如果你可以保证用户安装了JRE(例如在公司环境的内部),那么在这种情况下,applet(或者JNLP/Java Web Start,在本章稍后会介绍)就有可能成为分发客户程序和自动更新所有机器的最佳方式,而这种方式不需要分发和安装新软件通常所需的那些开销和投入。

如果本文对您有很大的帮助,还请点赞关注一下。

发表评论

表情:
评论列表 (有 0 条评论,106人围观)

还没有评论,来说两句吧...

相关阅读