MyEclipse6Java开发中文教程 第十八章图形界面开发一-AWT, Swing SWT 第十八章图形界面开发一-AWT,Swng,SWT 181图形界面简介 18.1.1概述 1812Java的GU类库发展简介 1813标准图形界面的组成 1814常见的可视化界面开发软件 182 Applet开发 1821 Apple的 Helloworld开发 1822 Applet的运行方式 182.3 Applet的生命周期 1824 Applet安全限制和签名 Applet 1825 Applet参数传递和 JavaScript互操作. 18.26从JDK的自带例子中学习 Applet和图形界面编程 183使用 Matisse4 MyEclipse开发 AWT/Swing应用 1831安装开发插件 1832可视化开发 Applet 1833调整生成代码和换肤. 34开发UDP局域网聊天桌面应用 1835发布应用、启动文件制作 184使用Jgo0插件开发 SWT/Swing应用 1841 Igloo插件的下载安装 1842搭建S开发环境 1843使用 Igloo开发SWT应用 9966 1844Jg00开发SW的常见问题 Jgoo开发 Swing应用 185参考资料 73 18.51网址 1852Java应用播放声音的代码示例 74 1853 JavaScript包的英文参考文档 1654 Eclipse中插件的安装 186小结 84 181图形界面简介 本节简要讨论图形界面,由于定位是开发为主,所以理论之处的讲解并不多,希望读者 理解,并自行寻找更多资料补充自学。另外提示,对图形界面无兴趣,或者工作根本用不到 刘长炯著
MyEclipse 6 Java 开发中文教程 1 刘长炯著 第十八章 图形界面开发--AWT,Swing, SWT 第十八章 图形界面开发--AWT,Swing,SWT............................................................. 1 18.1 图形界面简介..................................................................................................... 1 18.1.1 概述......................................................................................................... 2 18.1.2 Java的GUI类库发展简介.......................................................................... 3 18.1.3 标准图形界面的组成................................................................................ 4 18.1.4 常见的可视化界面开发软件..................................................................... 5 18.2 Applet开发.......................................................................................................... 6 18.2.1 Applet的HelloWorld开发........................................................................... 6 18.2.2 Applet的运行方式..................................................................................... 7 18.2.3 Applet的生命周期................................................................................... 13 18.2.4 Applet安全限制和签名Applet.................................................................. 15 18.2.5 Applet参数传递和JavaScript互操作........................................................ 19 18.2.6 从JDK的自带例子中学习Applet和图形界面编程.................................... 29 18.3 使用Matisse4MyEclipse开发AWT/Swing应用.................................................. 30 18.3.1 安装开发插件 ........................................................................................ 30 18.3.2 可视化开发Applet.................................................................................. 30 18.3.3 调整生成代码和换肤.............................................................................. 39 18.3.4 开发UDP局域网聊天桌面应用............................................................... 41 18.3.5 发布应用、启动文件制作........................................................................ 52 18.4 使用Jigloo插件开发SWT/Swing应用 ............................................................... 59 18.4.1 Jigloo插件的下载安装 ............................................................................ 59 18.4.2 搭建SWT开发环境................................................................................. 60 18.4.3 使用Jigloo开发SWT应用 ....................................................................... 65 18.4.4 Jigloo开发SWT的常见问题 .................................................................... 69 18.4.5 Jigloo 开发 Swing应用.......................................................................... 71 18.5 参考资料.......................................................................................................... 73 18.5.1 网址....................................................................................................... 73 18.5.2 Java应用播放声音的代码示例................................................................ 74 18.5.3 JavaScript 包的英文参考文档................................................................ 78 16.5.4 Eclipse中插件的安装.............................................................................. 83 18.6 小结................................................................................................................. 84 18.1 图形界面简介 本节简要讨论图形界面,由于定位是开发为主,所以理论之处的讲解并不多,希望读者 理解,并自行寻找更多资料补充自学。另外提示,对图形界面无兴趣,或者工作根本用不到
MyEclipse6Java开发中文教程 的读者,完全可以忽略本章的内容。 1811概述 在本书刚开始计划写的时候,选的书名是《 MyEclipse6 Java ee开发中文手册》,后 来才改成了现在的这个名字:《 MyEclipse6Java开发中文教程》。这是因为Java的覆盖面 要比 Java ee大些,Java的开发也不是除了做做网页(一般加以专业称呼为 Java e开发) 而且考虑到实际情况,在一般公司中经常出现维护老项目的现象,如果是在校学子做毕业设 计,也会用到一些目前来说不是太“主流”的技术,在Java中,经常就是指图形界面开发。 那么图形界面开发到底在实际中有没有用?回答是肯定的:有!大家想想,打开 Windows 后看到的是什么?窗口!那就对了,所有这些都是图形界面应用。旧浏览器本身,也是个 带界面,能够用鼠标键盘操作的图形应用。至于游戏,那就是专门主攻图形学的带界面应用, 绝对上讲,没有界面的应用是不存在的。界面是电脑和人脑沟通的窗口。类似手DOS,Lnux 那样的命令行的,叫文字界面。其它所有带有窗口,一般支持鼠标,键盘,手柄等的,都属 于图形界面。至于Java的开发,所用到的开发工具,例如 JBuilder, Eclipse, MyEclipse, Netbeans,无一不是图形界面的应用。但是长期以来,由于种种原因(我想其中最重要的 原因大概是速度,内存占用和系统集成度),图形界面一直没能成为Java开发的主流,尤 其在国内,做JSP成了Java开发的代名词,但是国外的情况好很多,出现了很多基于Swng 的优秀软件。我想国内的电脑普遍配置过低也是个很重要的因素。但是,这并不影响Java 图形界面的应用广度,很多项目,尤其是比较综合的项目,都还是用到了图形界面的开发 例如 Applet技术,客户端软件,以及最近非常流衔的 Eclipse下的 SWT/JFace/RCP(Rch Client platform,富用户客户端平台)软件开发,它们都是图形界面的软件。而且,在公司 很多老项目,可能是用 Applet搭建,或者是完全用Swng实现的,这时候,您都不得不维 护它,因为客户用习惯了一样东西后,是很难再做改变的,例如笔者此前就职的那家外企 就有大量的Swng应用。至于做算法的,一般也都会和一些界面结合起来,制作一些Demo 应用。如果是图形相关的,那更是100%要做界面了,虽然Java中的图形算法由于虚拟机 本身的原因执行效率低一些。 Java中的图形界面系统和JVM一样,也是分为四个层次(大致的划分,并未参考权威 的资料):操作系统图形设备层>虚拟机本地代码层>Java封装层>用户应用层。由于 画图依赖操作系统的功能,所以,在一些服务器上,例如没有安装ⅪⅥ indows系统的 Linux 服务器,不能执行图形界面应用。又由于Java的图形界面采用了最大公约数的做法,所以 和底层的语言例如C+十相比,其功能总是感觉少,例如托盘功能(桌面最右下角的那部分 区域),也是最近才加入的(JDK16支持)。虚拟机本地代码层体现在大量的DLL文件上,例 如 jre/bin/awt. dI,就是Java的AWT类的C代码的封装,所有的键盘和鼠标操作,都通过 它来进行(换句话说纯Java是做不到的)。使用微软的VC++中提供的一款工具 Dependency Walker,可以看到其中的DLL中封装的函数列表,如图18.1所示。所以一般 对Java访问系统级功能的操作,例如访问注册表,都需要额外使用C++代码来实现,一般 也不跨平台,这也是Java的图形界面开发一直没能流行开来的一个原因,甚至于现在出现 了 Eclipse力挺的SWT,这样的局面还是依然不能结束。 2 刘长炯著
MyEclipse 6 Java 开发中文教程 2 刘长炯著 的读者,完全可以忽略本章的内容。 18.1.1 概述 在本书刚开始计划写的时候,选的书名是《MyEclipse 6 Java EE 开发中文手册》,后 来才改成了现在的这个名字:《MyEclipse 6 Java 开发中文教程》。这是因为 Java 的覆盖面 要比 Java EE 大些,Java 的开发也不是除了做做网页(一般加以专业称呼为 Java EE 开发), 而且考虑到实际情况,在一般公司中经常出现维护老项目的现象,如果是在校学子做毕业设 计,也会用到一些目前来说不是太“主流”的技术,在 Java 中,经常就是指图形界面开发。 那么图形界面开发到底在实际中有没有用?回答是肯定的:有!大家想想,打开 Windows 后看到的是什么?窗口!那就对了,所有这些都是图形界面应用。IE 浏览器本身,也是个 带界面,能够用鼠标键盘操作的图形应用。至于游戏,那就是专门主攻图形学的带界面应用。 绝对上讲,没有界面的应用是不存在的。界面是电脑和人脑沟通的窗口。类似于 DOS,Linux 那样的命令行的,叫文字界面。其它所有带有窗口,一般支持鼠标,键盘,手柄等的,都属 于图形界面。至于 Java 的开发,所用到的开发工具,例如 JBuilder,Eclipse,MyEclipse, Netbeans,无一不是图形界面的应用。但是长期以来,由于种种原因(我想其中最重要的 原因大概是速度,内存占用和系统集成度),图形界面一直没能成为 Java 开发的主流,尤 其在国内,做 JSP 成了 Java 开发的代名词,但是国外的情况好很多,出现了很多基于 Swing 的优秀软件。我想国内的电脑普遍配置过低也是个很重要的因素。但是,这并不影响 Java 图形界面的应用广度,很多项目,尤其是比较综合的项目,都还是用到了图形界面的开发, 例如 Applet 技术,客户端软件,以及最近非常流行的 Eclipse 下的 SWT/JFace/RCP(Rich Client Platform,富用户客户端平台)软件开发,它们都是图形界面的软件。而且,在公司, 很多老项目,可能是用 Applet 搭建,或者是完全用 Swing 实现的,这时候,您都不得不维 护它,因为客户用习惯了一样东西后,是很难再做改变的,例如笔者此前就职的那家外企, 就有大量的 Swing 应用。至于做算法的,一般也都会和一些界面结合起来,制作一些 Demo 应用。如果是图形相关的,那更是 100%要做界面了,虽然 Java 中的图形算法由于虚拟机 本身的原因执行效率低一些。 Java 中的图形界面系统和 JVM 一样,也是分为四个层次(大致的划分,并未参考权威 的资料):操作系统图形设备层 > 虚拟机本地代码层 > Java 封装层 > 用户应用层。由于 画图依赖操作系统的功能,所以,在一些服务器上,例如没有安装 XWindows 系统的 Linux 服务器,不能执行图形界面应用。又由于 Java 的图形界面采用了最大公约数的做法,所以 和底层的语言例如 C++相比,其功能总是感觉少,例如托盘功能(桌面最右下角的那部分 区域),也是最近才加入的(JDK1.6 支持)。虚拟机本地代码层体现在大量的 DLL 文件上,例 如 jre/bin/awt.dll,就是 Java 的 AWT 类的 C 代码的封装,所有的键盘和鼠标操作,都通过 它来进行(换句话说纯 Java 是做不到的)。使用微软的 VC++中提供的一款工具 Dependency Walker,可以看到其中的 DLL 中封装的函数列表,如图 18.1 所示。所以一般 对 Java 访问系统级功能的操作,例如访问注册表,都需要额外使用 C++代码来实现,一般 也不跨平台,这也是 Java 的图形界面开发一直没能流行开来的一个原因,甚至于现在出现 了 Eclipse 力挺的 SWT,这样的局面还是依然不能结束
MyEclipse6Java开发中文教程 Ordinal 209(0x00D1) 208 (0x00D0) Mava_sun_awt._DefaultMouseInfoPeer_iswindowUnd 210x00D2 209x001 ava sun awt EmbeddedFrame_setPeer@12 211 (0x0OD3) 210 (Ox00D2) Java sun awt FontDescriptor initIDse8 12 (0x00D4) 211 (0x00D3) Java sun_ awt_Keyboar dFocusManagerPeerImpl-cle 回2130x005) 4)_Java_sun_awt_KeyboardFocusManagerPeerImpl e 214 (0x00D6) 213 (0x00D5) _Java_sun_ awt_KeyboardFocusManagerPeerImpl_get e 215 (0*00D7) 214 (0x00D6) Java sun_ awt PlatformFont_initIDsQ8 图181aMd中的本地方法列表 1812Java的GU|类库发展简介 Gu, Graphics User Interface,就是图形用户界面的意思。 Applet(中文常译作小应 用程序),是1995年导致Java大火一把的主要原因。当年Sun推出了 HotJava浏览器(当 然,此款浏览器早已停止开发,代之以浏览器+Java插件),成为世界上首个支持跨平台的 交互式应用的浏览器,虽然其后由于种种原因未能推广开来,但是它证明了Java的主要优 点:跨平台,安全性等等,为以后在服务器端和手机应用大展旗鼓打下了基础。 Applet不 能访问本地文件系统,也不能任意访问网络,这是个优点也是个缺点,后文我们会讨论如 何 Appelt的早期版本是AWT的一个子集。AMT( Abstract Windowing Toolkit),中文译为 抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。AWT 由Java中的 Java. aw包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GU) 导致里面的组件种类奇缺,例如常见的树状结构和表格,都不支持,所以开发人员对它的怨 声很大。我的Java学习之路,就是从一本讲解 Applet的薄薄的书籍开始的。 后来Sun公司推出了Swng(中文意思为摇摆,不过没有正式的中文名称,一般保持 英文称呼)图形包,它只利用了AWT的绘图功能,相当于白手起家,拿着一只画笔来模拟 所有的组件。例如早期的按钮,是长方形加阴影加字符串,那就构造一个绘图类,依次从底 到上把所有的内容绘制出来。这样,Swng可以任意设计图形界面,或者绘制成任意风格, 很容易实现换肤等玏能,但是缺陷就是运行速度和观感上,总是和真实的组件有些差异。所 谓假的真不了嘛。不过,因为 Swing采用了MVC架构设计,系统灵活性极强,被成为设计 模式的典型,甚至许多现在出现的AJAX框架,例如Ex,也采用了类似的MVC结构,可 见其设计思想之先进。 在推出 Swing后, Applet中也可以使用 Swing组件来构建高级的界面了,这导致当时 出现了不少 Applet+ Servlet开发的Web应用,尤其是一些老的项目,更是如此。同期,J2ME (Java2 Micro edition,微设备版)也推出了,获得了很大的成功。大家都知道移动有个百 宝箱业务,那就是Java开发的,一般为游戏居多。 不过,虽然Swng一直在改进,但是还是有人怀念操作系统原生的界面和组件,这种 情况下,旧BM资助的 Eclipse项目开始使用SWT( The Standard Widgetτ oolkit,标准部件 工具包),才用和AWT相反的做法,即使用最大公倍数的做法来使用本地类库(C++开发 的DL)来封装操作系统的组件,如果不存在,则采用模拟的方式,这样SWT随着 Eclipse 的推广获得了流行。当然, MyEclipse也是基于SWT构建的。随着SWT的发展,后来进 步推出了 JFace,对SWT进行了高层的封装,更发展到随着 Eclipse插件开发的流行, 出现了RCP应用,它的特点就是组件和AWT一样,完全和操作系统的一致,但是设计上 刘长炯著
MyEclipse 6 Java 开发中文教程 3 刘长炯著 图 18.1 awt.dll 中的本地方法列表 18.1.2 Java 的 GUI 类库发展简介 GUI,Graphics User Interface,就是图形用户界面的意思。Applet(中文常译作小应 用程序),是 1995 年导致 Java 大火一把的主要原因。当年 Sun 推出了 HotJava 浏览器(当 然,此款浏览器早已停止开发,代之以浏览器+Java 插件),成为世界上首个支持跨平台的 交互式应用的浏览器,虽然其后由于种种原因未能推广开来,但是它证明了 Java 的主要优 点:跨平台,安全性等等,为以后在服务器端和手机应用大展旗鼓打下了基础。Applet 不 能访问本地文件系统,也不能任意访问网络,这是个优点,也是个缺点,后文我们会讨论如 何 Appelt 的早期版本是 AWT 的一个子集。 AWT(Abstract Windowing Toolkit),中文译为 抽象窗口工具包,是 Java 提供的用来建立和设置 Java 的图形用户界面的基本工具。AWT 由 Java 中的 java.awt 包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI) 的类,这些类又被称为组件(components)。由于 AWT 采用本地组件+最小公倍数的做法, 导致里面的组件种类奇缺,例如常见的树状结构和表格,都不支持,所以开发人员对它的怨 声很大。我的 Java 学习之路,就是从一本讲解 Applet 的薄薄的书籍开始的。 后来 Sun 公司推出了 Swing(中文意思为摇摆,不过没有正式的中文名称,一般保持 英文称呼)图形包,它只利用了 AWT 的绘图功能,相当于白手起家,拿着一只画笔来模拟 所有的组件。例如早期的按钮,是长方形加阴影加字符串,那就构造一个绘图类,依次从底 到上把所有的内容绘制出来。这样,Swing 可以任意设计图形界面,或者绘制成任意风格, 很容易实现换肤等功能,但是缺陷就是运行速度和观感上,总是和真实的组件有些差异。所 谓假的真不了嘛。不过,因为 Swing 采用了 MVC 架构设计,系统灵活性极强,被成为设计 模式的典型,甚至许多现在出现的 AJAX 框架,例如 Ext,也采用了类似的 MVC 结构,可 见其设计思想之先进。 在推出 Swing 后,Applet 中也可以使用 Swing 组件来构建高级的界面了,这导致当时 出现了不少 Applet+Servlet 开发的 Web 应用,尤其是一些老的项目,更是如此。同期,J2ME (Java 2 Micro Edition,微设备版)也推出了,获得了很大的成功。大家都知道移动有个百 宝箱业务,那就是 Java 开发的,一般为游戏居多。 不过,虽然 Swing 一直在改进,但是还是有人怀念操作系统原生的界面和组件,这种 情况下,IBM 资助的 Eclipse 项目开始使用 SWT(The Standard Widget Toolkit,标准部件 工具包),才用和 AWT 相反的做法,即使用最大公倍数的做法来使用本地类库(C++开发 的 DLL)来封装操作系统的组件,如果不存在,则采用模拟的方式,这样 SWT 随着 Eclipse 的推广获得了流行。当然,MyEclipse 也是基于 SWT 构建的。随着 SWT 的发展,后来进 一步推出了 JFace,对 SWT 进行了高层的封装,更发展到随着 Eclipse 插件开发的流行, 出现了 RCP 应用,它的特点就是组件和 AWT 一样,完全和操作系统的一致,但是设计上
MyEclipse6Java开发中文教程 稍嫌死板,基本上是类似于链表的方式,不如 AWT/Swing的APl来的灵活,也很难换肤(除 非在操作系统层次上实现功能,封装为Java调用,目前已经有人实现,参考资料部分)。 因为SWT是依赖于DLL+Java代码方式的图形库,因此不同的操作系统下要使用对应版 本的SWT类库。甚至于SWT还推出了手机运行的版本,大有和Swng分庭抗礼的气势。 1813标准图形界面的组成 作为开发者,大家需要了解常见的桌面应用的界面结构,并按照这种常规的做法进行界 面开发,因为只有这样,使用者才能很快的上手,而且,绝大部分的界面组件,在不同的编 程语言中作用都是相同的。这样您可以学习别人的或者别的语言的界面设计,很快的应用到 自己的项目中。图18.2列出了一款非常好用的Java开发工具:Ge的界面 文件G编得搜索视图工程巴创建工具①帮助出回画后⊙%%需 回色日,②,,PB2c 工程管理器 日CO时!senn No)CodeM x244 public string geturl()i 245 return url +. IE_Extension 246 日色sre +a benson 247 日 codeman Operam PrI the url to set 250 工程管理器 public void setUrl(String url)[ C类结构浏览器 O SaveWebDialog(Shell parent, nt s 256 ◆ getEncodingo: Strin public String getEncoding( ◆ getTtleO: String ◆ getUrl∩ Strin y‖源文件预史 输出窗 281 lines 图182桌面应用界面结构 典型的界面包括顶部的菜单栏(Menu),顶部稍下的工具栏( Toolbar),界面主体和状态 栏( Statusbar)。菜单栏包括菜单条( Menu Bar),其实菜单条是个不可见的容器,包括了 下面的菜单(Menu)以及菜单项( Menuitem),另外菜单和菜单项又可以包含子菜单 ( Submenu),要说可见,也就是左侧的竖着排的几个小点,表明这个菜单是可以浮动或者拖 动的( loadable):如果不可浮动的时候,这几个点就消失了。菜单上显示的文字文件(E 其中的括号里面的字符F叫做助记符( Mnemonic),它的作用是帮助行动不变的人使用键 盘来访问菜单(当然也可以使正常人使用键盘快速访问菜单),当用户按下键盘上的AIt键 后,再点击带有下划线的字母,就可以打开对应的菜单。因此,助记符只能是英文字母或者 数字。另外,对于文件菜单下的子项目打开, 打开Q)Cm+0,它的左侧显示的叫图标 (lcon),右侧显示的叫标签( Label,也有称为Text,即文本的),最右侧显示的叫快捷键 刘长炯著
MyEclipse 6 Java 开发中文教程 4 刘长炯著 稍嫌死板,基本上是类似于链表的方式,不如 AWT/Swing 的 API 来的灵活,也很难换肤(除 非在操作系统层次上实现功能,封装为 Java 调用,目前已经有人实现,参考资料部分)。 因为 SWT 是依赖于 DLL+Java 代码方式的图形库,因此不同的操作系统下要使用对应版 本的 SWT 类库。甚至于 SWT 还推出了手机运行的版本,大有和 Swing 分庭抗礼的气势。 18.1.3 标准图形界面的组成 作为开发者,大家需要了解常见的桌面应用的界面结构,并按照这种常规的做法进行界 面开发,因为只有这样,使用者才能很快的上手,而且,绝大部分的界面组件,在不同的编 程语言中作用都是相同的。这样您可以学习别人的或者别的语言的界面设计,很快的应用到 自己的项目中。图 18.2 列出了一款非常好用的 Java 开发工具:Gel 的界面。 图 18.2 桌面应用界面结构 典型的界面包括顶部的菜单栏(Menu),顶部稍下的工具栏(Toolbar),界面主体和状态 栏(Statusbar)。菜单栏包括菜单条(MenuBar),其实菜单条是个不可见的容器,包括了 下面的菜单(Menu)以及菜单项(MenuItem),另外菜单和菜单项又可以包含子菜单 (SubMenu),要说可见,也就是左侧的竖着排的几个小点,表明这个菜单是可以浮动或者拖 动的(Floatable);如果不可浮动的时候,这几个点就消失了。菜单上显示的文字文件(F), 其中的括号里面的字符 F 叫做助记符(Mnemonic),它的作用是帮助行动不变的人使用键 盘来访问菜单(当然也可以使正常人使用键盘快速访问菜单),当用户按下键盘上的 Alt 键 后,再点击带有下划线的字母,就可以打开对应的菜单。因此,助记符只能是英文字母或者 数字。另外,对于文件菜单下的子项目打开, ,它的左侧显示的叫图标 (Icon),右侧显示的叫标签(Label,也有称为 Text,即文本的),最右侧显示的叫快捷键
MyEclipse6Java开发中文教程 ( Accelerator,也叫加速键),也就是说同时按下ct键和O键(其实是按顺序先按下Ctrl 键不放,然后再按下键盘上的O键,接着依次松开两个键),就相当于直接执行这个菜单所 对应的功能。工具栏上的按钮,一般是鼠标移过时,会发生边框的改变。鼠标停留在按钮上 显示的淡黄色背景的提示文字,例如打开,叫做工具栏提示( Tooltip),显示的字呢,则被 称为工具栏提示文本( Tooltip Text),这些文字在固定时间,一般为几秒之后消失。工程管 理器处显示的叫内部窗体( InternalFrame),上面有最大化,停靠,还原等按钮。停靠后的 内部窗体只在侧栏显示一个小小的图标和窗口以及提示文字,例如图中的输出窗口,点击后 暂时弹出,点击别处后又会自动最小化隐藏。工程管理器里面显示的是树(Tree),每个树的 节点(Node)都可以带有图标和文字,也有人称之为 Treeltem的。工程管理器右侧则显示 了一个标签页面板( Tabbed Pane),每个项目被成为标签(Tab)或者标签项( Tabltem)。标 签里面显示的代码则是一个富文本区( Rich Textarea),能够显示不同的颜色。其它的输入 元素还包括单行文本框( TextField)和多行文本区( TextArea)。最底部的状态栏,共般可以 使用单个标签( Label,只用来显示不可被选中的文本)来显示;复杂点的状态栏则使用多 个组件组合显示。 图形界面开发中有个重要的概念就是容器( Container)和组件( Component),类似于 玻璃板和上面镶嵌的雕饰。容器一般都是透明的,有了它,例如将状态栏使用容器来实现, 那么就可以在其中成组的加入足够多的组件,成为一个整体,便手进行移动,显示,隐藏 设置大小等操作。容器也可以设置为不透明的,这样就可以带有背景色,从而能够看到它 容器的外观一般会影响加入的子组件的外观,默认情况下容器中的组件都会缺省的和容器的 色彩设置保持一致。 还有很多的概念,读者可以自行阅读相关教程,本书就不再赘述这些内容了。 1814常见的可视化界面开发软件 在实际应用中,界面的开发可以使用手工编写代码和可视化界面设计器进行开发两种模 式。虽然最优秀的组件都是手工编写代码作出的,然而这对于开发人员要求很高,要求开发 人员必须精通Java的GU开发。一般来说,采用可视化界面设计器+代码调整的方式进行 开发,可以大大提高开发效率。Ec|pse官方推出的开源免费界面设计器叫做 Visual editor, 可以可视化的设计Swng和SWT界面,然而遗憾的是无法用于 Eclipse33下,而且运行 时速度极慢,代码稍微复杂,就需要很长时间进行解析。因此, Eclipse下的界面设计器以 商业收费插件居多,例如 Window builder,支持SWT,Swng,AMT,RCP等界面开发, 有免费版本,但是功能很有限。还有一个比较小巧就是笔者本章即将介绍的Jigo,它对个 人使用免费,支持可视化图形界面的开发,还支持Swng和SWT界面互相转换功能。以前 的收费开发工具 JBuilder也对拖拉设计的Swng、AMT界面开发提供了支持。而目前来说 对 Swing/AWT界面开发支持的最好的,当属 Netbeans提供的免费界面设计器,代号 Matisse(注:这是一位法国著名画家的名字),是现存数一数二的界面设计器,它最大的本 领就是无须开发者了解布局管理器之类的概念,只要按照自己的设想拖放搭建界面,运行后 不论主窗口如何放大,都不会变形,可惜的是不支持SWT的开发。虽然此工具很好,然而 却必须安装 Netbeans才能使用,而 MyEclipse从中看出了商机,它把 Netbeans的界面设 计器功能单独独立出来,集成到 Eclipse中使用(这个插件叫做 Matisse4 MyEclipse,即使 没有安装 MyEclipse也可以单独使用,当然是收费插件),从而让 Eclipse的用户也能使用 流的 Swing界面设计器了。 综上所述, MyEclipse本身只支持 Swing的界面设计器,本书将会选用 Igloo插件来 配套实现SWT的界面设计器功能进行讲解。所以本章内容涵盖: MyEclipse的 AWT/Swing 刘长炯著
MyEclipse 6 Java 开发中文教程 5 刘长炯著 (Accelerator,也叫加速键),也就是说同时按下 Ctrl 键和 O 键(其实是按顺序先按下 Ctrl 键不放,然后再按下键盘上的 O 键,接着依次松开两个键),就相当于直接执行这个菜单所 对应的功能。工具栏上的按钮,一般是鼠标移过时,会发生边框的改变。鼠标停留在按钮上 显示的淡黄色背景的提示文字,例如打开,叫做工具栏提示(Tooltip),显示的字呢,则被 称为工具栏提示文本(TooltipText),这些文字在固定时间,一般为几秒之后消失。工程管 理器处显示的叫内部窗体(InternalFrame),上面有最大化,停靠,还原等按钮。停靠后的 内部窗体只在侧栏显示一个小小的图标和窗口以及提示文字,例如图中的输出窗口,点击后 暂时弹出,点击别处后又会自动最小化隐藏。工程管理器里面显示的是树(Tree),每个树的 节点(Node)都可以带有图标和文字,也有人称之为 TreeItem 的。工程管理器右侧则显示 了一个标签页面板(TabbedPane),每个项目被成为标签(Tab)或者标签项(TabItem)。标 签里面显示的代码则是一个富文本区(RichTextarea),能够显示不同的颜色。其它的输入 元素还包括单行文本框(TextField)和多行文本区(TextArea)。最底部的状态栏,一般可以 使用单个标签(Label,只用来显示不可被选中的文本)来显示;复杂点的状态栏则使用多 个组件组合显示。 图形界面开发中有个重要的概念就是容器(Container)和组件(Component),类似于 玻璃板和上面镶嵌的雕饰。容器一般都是透明的,有了它,例如将状态栏使用容器来实现, 那么就可以在其中成组的加入足够多的组件,成为一个整体,便于进行移动,显示,隐藏, 设置大小等操作。容器也可以设置为不透明的,这样就可以带有背景色,从而能够看到它。 容器的外观一般会影响加入的子组件的外观,默认情况下容器中的组件都会缺省的和容器的 色彩设置保持一致。 还有很多的概念,读者可以自行阅读相关教程,本书就不再赘述这些内容了。 18.1.4 常见的可视化界面开发软件 在实际应用中,界面的开发可以使用手工编写代码和可视化界面设计器进行开发两种模 式。虽然最优秀的组件都是手工编写代码作出的,然而这对于开发人员要求很高,要求开发 人员必须精通 Java 的 GUI 开发。一般来说,采用可视化界面设计器+代码调整的方式进行 开发,可以大大提高开发效率。Eclipse 官方推出的开源免费界面设计器叫做 Visual Editor, 可以可视化的设计 Swing 和 SWT 界面,然而遗憾的是无法用于 Eclipse 3.3 下,而且运行 时速度极慢,代码稍微复杂,就需要很长时间进行解析。因此,Eclipse 下的界面设计器以 商业收费插件居多,例如 WindowBuilder,支持 SWT,Swing,AWT,RCP 等界面开发, 有免费版本,但是功能很有限。还有一个比较小巧就是笔者本章即将介绍的 Jigloo,它对个 人使用免费,支持可视化图形界面的开发,还支持 Swing 和 SWT 界面互相转换功能。以前 的收费开发工具 JBuilder 也对拖拉设计的 Swing、AWT 界面开发提供了支持。而目前来说, 对 Swing/AWT 界面开发支持的最好的,当属 Netbeans 提供的免费界面设计器,代号 Matisse(注:这是一位法国著名画家的名字),是现存数一数二的界面设计器,它最大的本 领就是无须开发者了解布局管理器之类的概念,只要按照自己的设想拖放搭建界面,运行后 不论主窗口如何放大,都不会变形,可惜的是不支持 SWT 的开发。虽然此工具很好,然而 却必须安装 Netbeans 才能使用,而 MyEclipse 从中看出了商机,它把 Netbeans 的界面设 计器功能单独独立出来,集成到 Eclipse 中使用(这个插件叫做 Matisse4MyEclipse,即使 没有安装 MyEclipse 也可以单独使用,当然是收费插件),从而让 Eclipse 的用户也能使用 一流的 Swing 界面设计器了。 综上所述,MyEclipse 本身只支持 Swing 的界面设计器,本书将会选用 Jigloo 插件来 配套实现 SWT 的界面设计器功能进行讲解。所以本章内容涵盖:MyEclipse 的 AWT/Swing