如何与桌面类集成

Java™Standard Edition 版本 6 缩小了本机应用程序和 Java 应用程序的性能以及集成之间的差距。除了新的system tray功能,splash screen支持和增强的为 JTables 打印之外,Java SE 版本 6 还提供了 Desktop API(java.awt.Desktop)API,它允许 Java 应用程序与与主机平台上与特定文件类型相关联的默认应用程序进行交互。

Desktop类提供了新功能。该 API 来自 JDesktop 集成组件(JDIC)项目。 JDIC 项 Object 目标是使台式机成为“基于 Java 技术的应用程序的第一流”,从而实现无缝集成。 JDIC 使 Java 应用程序可以访问本机桌面提供的功能和设施。关于新的 Desktop API,这意味着 Java 应用程序可以执行以下操作:

  • 使用特定的统一资源标识符(URI)启动主机系统的默认浏览器

  • 启动主机系统的默认电子邮件 Client 端

  • 启动应用程序以打开,编辑或打印与那些应用程序关联的文件

Note:

桌面 API 使用主机 os 的文件关联来启动与特定文件类型关联的应用程序。例如,如果 OpenDocument 文本(.odt)文件 extensions 与 OpenOffice Writer 应用程序关联,则 Java 应用程序可以启动 OpenOffice Writer 来打开,编辑甚至打印具有该关联的文件。根据主机系统,不同的应用程序可能与不同的动作相关联。例如,如果无法打印特定文件,请首先检查其 extensions 在给定的 os 上是否具有打印关联。

使用isDesktopSupported()方法来确定 Desktop API 是否可用。在 Solarisos 和 Linux 平台上,此 API 依赖于 Gnome 库。如果这些库不可用,则此方法将返回 false。确定桌面 API 受支持后,即isDesktopSupported()返回 true,应用程序可以使用静态方法getDesktop()检索Desktop实例。

如果应用程序在没有键盘,鼠标或监视器的环境中运行(“无头”环境),则getDesktop()方法将抛出java.awt.HeadlessException

一旦检索到,Desktop实例就允许应用程序浏览,邮寄,打开,编辑,甚至打印文件或 URI,但前提是所检索到的Desktop实例支持这些活动。这些活动中的每一个都称为一个动作,每个活动都表示为Desktop.Action枚举实例:

  • BROWSE —表示由主机的默认浏览器执行的浏览操作。

  • MAIL —表示由主机的默认电子邮件 Client 端执行的邮件操作。

  • OPEN —代表与打开特定文件类型相关联的应用程序执行的打开操作。

  • EDIT —表示由应用程序执行的与编辑特定文件类型相关联的编辑动作

  • PRINT —表示由应用程序执行的与打印特定文件类型相关的打印动作。

即使在相同的文件类型上,也可以针对这些不同的操作注册不同的应用程序。例如,可以为 OPEN 操作启动 Firefox 浏览器,为 EDIT 操作启动 Emacs,而为 PRINT 操作启动另一个应用程序。主机桌面的关联用于确定应调用哪个应用程序。使用 JDK 6 中的当前版本的 Desktop API 无法操作桌面文件关联,并且目前只能使用依赖于平台的工具来创建或更改那些关联。

以下示例显示了上述功能。

Note

isDesktopSupported()测试当前平台是否支持此类。如果支持,请使用getDesktop()检索实例。

« PreviousTrailNext »