下一页 1 2
原文作者:JackConradson 文章出处:http://java.sun.com/developer/technicalArticles/J2SE/Desktop/jdic_assoc 译者:Hardneedl 联系译者:HardNeedl@126.COM JDesktopIntegrationComponents(JDIC)站点https://jdic.dev.java.net 文章索引 ======== SUN微系统公司赞助了JDesktopIntegrationComponents(JDIC)项目。这个项目可使用JAVA 技术来访问某些操作系统特有功能,包括: .设置文件类型的关联 .把某一WEB浏览器装载到抽象图形工具(AbstractWindowToolkit)的画布上 .把JAVAWEBSTART程序打包成本机安装程序 .支持系统托盘以及托盘上的弹出式菜单 .开启桌面应用程序,更进一步来进行编辑和打印文件。 本文将来讲述上面列出的五种功能之中的第一:文件类型关联。 什么叫做关联? ============= 每种操作系统,无论是微软的WINDOWS,LINUX,SOLARIS操作系统环境还是苹果公司的Macintosh OSX都有几种类型的桌面图形用户界面来表示计算机上可连同程序一起运行的文件。当用户在一个 数据文件上点击时候,操作系统是如何知道需要以哪个应用程序来打开这个数据文件的呢?当用户 决定在WINDOWS操作系统上更改一个文件的文件名,然而却忽略了附上文件的扩展名,那么WINDOWS 为什么会突然地忘记了该使用哪个程序来使用这个文件呢? 很容易回答上面的问题:每种操作系统都维护着一个与文件扩展名相关信息的数据表。每个扩展名 关联到一种文件类型,在这样的一个数据表里,每种文件类型类型都有至少一种以上的动作与之相关。 这些动作通常是诸如打开,编辑或者打印文件。此外,每种动作都会找到根据与之关联的可执行程序来 完成这些功能。在一种文件上发起一个动作时候,操作系统就到那个保存了跟扩展名有关联的信息表里 去找出与这种文件对应的默认的应用程序来执行。当操作系统不能在这个信息表里找到默认的程序的时候, 将会询问用户选取某个应用程序来执行他们所希望的动作。 在WINDOWSXP上,点选任一文件系统窗口上的菜单项“工具->文件夹选项”菜单就可看到上文提到的信息 表。下图就显示了这个信息表上关于.TXT文件对应的编辑程序。选中扩展名TXT后,点击对话框底部的 “高级”按钮。请注意列在新弹出的对话框里的三个动作:“打开”,“打印”,“打印到”。在动作列表 中点选名为“打开”的那个选项后在点击“编辑”按钮就会出现另一个对话框。这个“打开”动作使用了 NOTEPAD.EXE程序来为所有扩展名是.TXT的文件执行“打开”的动作的。假如用户无意中把.TXT的扩展名改 成了.txr,那么操作系统就不知道启用哪个程序来为这个扩展名是.txr的文件执行打开动作了,就是因为在 信息表里没有关于扩展名为.txr的记录。
JDIC中的关联类 ============== 正如那句响亮的话语:“一次编写,到处运行”那样,JAVA平台隐藏了与操作系统特性的相关。这也就使得 JAVA应用程序能够访问文件类型信息表。JDIC致力于解决这样的问题。安装上JDIC的库文件,J在AVA平台上 开发的程序员就通过使用一些类来做与文件关联相关的任务了。你应该熟悉三个主要的类:AssociationService, Association,Action,这三个主要的类位于org.jdesktop.jdic.filetypes包。请注意:本文仅以 org.jdesktop.jdic.filetypes包里的Action类来讲述,不牵扯任何WAT或者JAVA基本类库(JFC)和SWING中的类。 程序员借助Association类来创建新的文件类型或者更改现存的文件类型。可使用这个类里的一些方法来编辑文件类型 ,MIME扩展类型,与文件类型对应的图标以及关联到文件类型的动作。 借助Action类来为文件类型指定动作。所谓的动作就入上文中提到的包括“打开”或者“编辑”。为每一个动作指派 一个可执行程序的路径来实现功能。必须在文件类型上把Action对象添加到Association对象。 AssociationService类用来让程序员在文件类型信息表中添加或删除条目。既可用管理员身份或者一般用户的身份来实现这样的功能。这个类用Association对象在文件类型信息表中作添加或删除的动作。当AssociationService类在文件类型信息表上做添加或编辑操作后,那么对应的文件类型就在信息表里驻留下来了。这种驻留不会因为那个创建或者进行编辑文件类型的JAVA应用程序的结束而改变,直到文件类型信息条目由于外部的某些原因或者是由于AssociationService对象做的工作导致被删除了才会改变。AssociationService对象在文件类型信息表里既能查找特定的文件扩展名,也能查找MIME的类型。如果找到了需要的文件类型了,那么就返回一个代表那种文件类型的Association对象。AssociationService对象可访问文件类型信息表里的条目,因此程序员就能更改一些内容,比如让扩展名doc关联到StarOffice程序而不是微软的Word。org.jdesktop.jdic.filetypes.Association
org.jdesktop.jdic.filetypes.Action
org.jdesktop.jdic.filetypes.AssociationService