疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

GUI(图形用户界面)和AWT—[疯狂java讲义]


 

GUI(图形用户界面)和AWT
 
        前面介绍的所有程序都基于命令行,基于命令行的程序可能只有一些“专业”计算机人士才会使用。例如前面编写的五子棋、梭哈等程序,恐怕只有我们自己才愿意玩这么“糟糕”的游戏,很少有最终用户愿意对着黑糊糊的命令行界面敲命令。
 
        相反,如果为程序提供直观的图形用户界面(Graphics User Interface,简称为GUI),最终用户通过鼠标拖动、单击等动作就可以操作整个应用,整个应用程序就会受欢迎得多(实际上,Windows之所以广为人知,其最初的吸引力就是来自于它所提供的图形用户界面)。作为一个程序设计者,必须优先考虑用户的感受,一定要让用户感到“爽”,我们的程序才会被需要、被使用,这样的程序才有价值。
 
        当JDK1.0发布时,Sun提供了一个基本的GUI类库,这个GUI类库希望可以在所有平台下都能运行,这套基本类库被称为“抽象窗口工具集(Abstract Window Toolkit)",它为Java应用程序提供了基本的图形组件。AWT是窗口框架,它从不同平台的窗口系统中抽取出共同组件,当程序运行时,将这些组件的创建和动作委托给程序所在的运行平台。简而言之,当使用AWT编写图形界面应用时,程序仅指定了界面组件的位置和行为,并未提供真正的实现,JVM调用操作系统本地的图形界面来创建和平台一致的对等体。
 
        使用AWT创建的图形界面应用和所在运行平台有相同的界面风格,比如在Windows操作系统上,它就表现出Windows风格;在UNIX操作系统上,它就表现出UNIX风格。Sun希望采用这种方式来实现“Write Once, Run Anywhere”的目标。
 
    但实际应用中,AWT出现了如下几个问题:
 
    1、使用AWT作出的图形用户界面在所有平台上都显得很丑陋,功能也非常有限。
 
    2、AWT为了迎合所有主流操作系统的界面设计,AWT组件只能使用这些操作系统上图形界面组件的交集,所以不能使用特定操作系统上复杂的图形界面组件,最多只能使用四种字体。
 
    3、AW下用的是非常笨拙的、非面向对象的编程模式。

        于是新的GUI库诞生了,简称为IFC (Internet Foundation Classes),其实Swing并没有完全替代AWT组件,而是建立在AWT基础之上,Swing仅提供了能力更强大的用户界面组件,即使是完全采用Swing编写的GUI程序中,依然需要使用AWT的事件处理机制。AWT组件在Swing里将有对应的实现,二者用法基本相似。 (摘自[疯狂java讲义])