JavaHelp软件的一个定制实用程序类
JavaHelp软件的一个定制实用程序类 | ||||||||||||||||||||||
|
||||||||||||||||||||||
发布者:IBM 日期: 2000-07-01 00:00:00 浏览次数:0 (共有_条评论) 查看评论 | 我要评论 | ||||||||||||||||||||||
级别: 初级
Marshall Lamb (mlamb@us.ibm.com), 软件工程师, IBM 2000 年 7 月 01 日
在 Java 应用程序中开发图形用户界面的一个有力之处是,能够使它与平台上的其他类似应用程序的界面风格彼此相像。单个 Java 应用程序就可以看起来像 Windows NT 上的任何其他 Win32 应用程序,或者像 UNIX 上的 X-Windows 应用程序,而且这是自动实现的。接下来的挑战就是确保同时也有正常的窗口技术支持功能,使该应用程序不仅看起来像其他应用程序,而且行为也与它们类似。 在 Win32 平台上,最常见的跨应用程序的功能之一是 Windows 帮助引擎和查看器。直到最近,Sun 公司的 JavaHelp 软件能用之前,一直没有用于 Java 应用程序的通用帮助引擎或查看器,这使 Java 应用程序在其 Win32 对手之前处于明显的劣势。 在本文中我将讨论:
一个需要帮助功能的应用程序 我曾致力于一个急需帮助功能的大规模 Java 应用程序。我们需要一个工具,但没有开发自己工具的时间或资源。我们还想要一个支持开放式标准如 Java 编程和 HTML 的工具。显而易见的选择就是 JavaHelp 程序包,特别是因为我们领域中的许多其他产品已经在使用它或者正为使用它而进行评估。 JavaHelp 程序包的使用实际上非常简单,但要有效地使用它,开发人员必须了解此程序包的几个部分。试图让从事一个大型开发项目的许多开发人员都熟悉 JavaHelp 软件,并用它来加快速度,这可能既困难又费时。开发人员面对的复杂性越少,越能集中注意力于这个程序包本身,则集成和部署就越容易,将来的维护也就越省事。 我们必须解决的另一个实现问题是提供多少帮助。JavaHelp 程序包提供 Java 类,以提供字段级帮助以及基于操作的帮助。字段级帮助是指这样一种功能:选中某个用户界面控件并(例如)按 F1 键来获得该特定控件的帮助。基于操作的帮助是指单击对话框上的“帮助”按钮,或选择“帮助”主菜单类别下的某个选项。我们决定不在我们的应用程序中实现字段级帮助,原因是为每个控件管理帮助 ID 的成本太高,尤其是在整个周期中对用户界面的更改次数很多的情况下。我们转而着眼于基于操作的帮助上,以进一步减小对开发和技术编写人员的影响。
JavaHelp 程序包概述 JavaHelp 程序包内含许多类和实用程序,可以帮助您开发并实现帮助功能。有一些实用程序,用于生成索引和搜索帮助内容的控制文件。有一些 Java 类,用于实现字段级帮助和查看基于操作的帮助。甚至还有一些类,用于扩展帮助浏览器或者甚至实现您自己的帮助浏览器。随 JavaHelp 程序包提供用户指南以及 API javadoc。 本文不讨论建立帮助内容并扩展或开发帮助浏览器应用程序。由于上文已经说明的原因,也不讨论字段级帮助,而是集中说明帮助内容的文件系统结构,以及 JavaHelp 程序包的两个主要类:HelpSet 和 HelpBroker。这两个类已为我们用于自己的应用程序,以便于使用基于操作的帮助。 JavaHelp 目录结构 您也可以按应用程序组织您的 HTML 帮助目录,从而使每个应用程序都具有不同的帮助集文件,但您这样做会丧失跨应用程序的搜索功能。作为 JavaHelp 建立过程的一部分生成的搜索数据库要求所有要搜索的 HTML 文件位于同一目录中。 HelpSet 通过使帮助集文件包括标准的语言环境扩展名,您可以通知 HelpSet 类根据系统的当前语言环境来搜索 Java CLASSPATH,以便找到要使用的正确帮助集,而 Win32 的帮助则不会这样做。 一旦被实例化和初始化,HelpSet 对象的行为将或多或少与指向 HTML 帮助文件目录的文件指针类似。在创建 HelpBroker 对象时您指定要使用的 HelpSet,它负责创建和管理帮助浏览器。 HelpBroker 使用 HelpBroker 的浏览器所遇到的一个问题是,它由调用帮助浏览器的父窗口所拥有。如果父窗口启动了帮助浏览器,然后又启动了模式子对话框(即在消除子对话框之前不能操纵父框架),则不能操纵帮助浏览器。它是父框架的子级,而不是子对话框的子级。因此,即使您经过父对话框从子对话框更新帮助浏览器中的帮助主题,虽然新主题会出现,但是您不能选中帮助浏览器并浏览目录。 除了实现 HelpSet 和 HelpBroker 类关系外,我们使用自己的帮助实用程序来解决此问题。
实现一个帮助实用程序类 我们创建了一个称为 StudioHelp 的类,它允许开发人员容易地显示某个特定帮助主题。要使用 StudioHelp 类,开发人员必须在其应用程序中做两件事:初始化 StudioHelp,以使用正确的帮助集;调用 通过在显示帮助浏览器的激活窗口之前设置,我们解决了上一节说明的模态问题。这就重新建立了浏览器窗口的父级,并使单个 HelpBroker 实例能够为所有的模式或非模式对话框服务。 请查看 StudioHelp 类的源代码。 所用的 JavaHelp 函数
使用 StudioHelp 实用程序类
此步骤将借助要使用的相应 HelpSet 文件(如 然后,在应用程序中的每个对话框或框架对象中,您只须调用静态
可能的增强 您可以增强 StudioHelp 实用程序类,来对您的应用程序整合更多智能。例如,如果 StudioHelp 在您产品的多个应用程序之间共享,则您可以给予 StudioHelp 主权,让它根据 HelpSet 文件的初始化方式来指定正确的 HelpSet 文件,从而免除不同应用程序开发人员要担负的这种责任。例如,您可以指定一些静态标识符作为
CheckBalanceApp 可以被定义为 StudioHelp 类中的一个静态整数:
在
结论 JavaHelp 软件是一个多功能的有用工具,用于将帮助整合到基于 Java 的用户界面应用程序。在现有应用程序项目中部署此技术的最简单方法是,将维护 JavaHelp 的复杂性和开销封装在一个实用程序类中,并教会开发人员使用一个更为简化的接口,在应用程序中包括帮助功能。 |
JavaHelp软件的一个定制实用程序类 | ||||||||||||||||||||||
|
||||||||||||||||||||||
发布者:IBM 日期: 2000-07-01 00:00:00 浏览次数:0 (共有_条评论) 查看评论 | 我要评论 | ||||||||||||||||||||||
级别: 初级
Marshall Lamb (mlamb@us.ibm.com), 软件工程师, IBM 2000 年 7 月 01 日
在 Java 应用程序中开发图形用户界面的一个有力之处是,能够使它与平台上的其他类似应用程序的界面风格彼此相像。单个 Java 应用程序就可以看起来像 Windows NT 上的任何其他 Win32 应用程序,或者像 UNIX 上的 X-Windows 应用程序,而且这是自动实现的。接下来的挑战就是确保同时也有正常的窗口技术支持功能,使该应用程序不仅看起来像其他应用程序,而且行为也与它们类似。 在 Win32 平台上,最常见的跨应用程序的功能之一是 Windows 帮助引擎和查看器。直到最近,Sun 公司的 JavaHelp 软件能用之前,一直没有用于 Java 应用程序的通用帮助引擎或查看器,这使 Java 应用程序在其 Win32 对手之前处于明显的劣势。 在本文中我将讨论:
一个需要帮助功能的应用程序 我曾致力于一个急需帮助功能的大规模 Java 应用程序。我们需要一个工具,但没有开发自己工具的时间或资源。我们还想要一个支持开放式标准如 Java 编程和 HTML 的工具。显而易见的选择就是 JavaHelp 程序包,特别是因为我们领域中的许多其他产品已经在使用它或者正为使用它而进行评估。 JavaHelp 程序包的使用实际上非常简单,但要有效地使用它,开发人员必须了解此程序包的几个部分。试图让从事一个大型开发项目的许多开发人员都熟悉 JavaHelp 软件,并用它来加快速度,这可能既困难又费时。开发人员面对的复杂性越少,越能集中注意力于这个程序包本身,则集成和部署就越容易,将来的维护也就越省事。 我们必须解决的另一个实现问题是提供多少帮助。JavaHelp 程序包提供 Java 类,以提供字段级帮助以及基于操作的帮助。字段级帮助是指这样一种功能:选中某个用户界面控件并(例如)按 F1 键来获得该特定控件的帮助。基于操作的帮助是指单击对话框上的“帮助”按钮,或选择“帮助”主菜单类别下的某个选项。我们决定不在我们的应用程序中实现字段级帮助,原因是为每个控件管理帮助 ID 的成本太高,尤其是在整个周期中对用户界面的更改次数很多的情况下。我们转而着眼于基于操作的帮助上,以进一步减小对开发和技术编写人员的影响。
JavaHelp 程序包概述 JavaHelp 程序包内含许多类和实用程序,可以帮助您开发并实现帮助功能。有一些实用程序,用于生成索引和搜索帮助内容的控制文件。有一些 Java 类,用于实现字段级帮助和查看基于操作的帮助。甚至还有一些类,用于扩展帮助浏览器或者甚至实现您自己的帮助浏览器。随 JavaHelp 程序包提供用户指南以及 API javadoc。 本文不讨论建立帮助内容并扩展或开发帮助浏览器应用程序。由于上文已经说明的原因,也不讨论字段级帮助,而是集中说明帮助内容的文件系统结构,以及 JavaHelp 程序包的两个主要类:HelpSet 和 HelpBroker。这两个类已为我们用于自己的应用程序,以便于使用基于操作的帮助。 JavaHelp 目录结构 您也可以按应用程序组织您的 HTML 帮助目录,从而使每个应用程序都具有不同的帮助集文件,但您这样做会丧失跨应用程序的搜索功能。作为 JavaHelp 建立过程的一部分生成的搜索数据库要求所有要搜索的 HTML 文件位于同一目录中。 HelpSet 通过使帮助集文件包括标准的语言环境扩展名,您可以通知 HelpSet 类根据系统的当前语言环境来搜索 Java CLASSPATH,以便找到要使用的正确帮助集,而 Win32 的帮助则不会这样做。 一旦被实例化和初始化,HelpSet 对象的行为将或多或少与指向 HTML 帮助文件目录的文件指针类似。在创建 HelpBroker 对象时您指定要使用的 HelpSet,它负责创建和管理帮助浏览器。 HelpBroker 使用 HelpBroker 的浏览器所遇到的一个问题是,它由调用帮助浏览器的父窗口所拥有。如果父窗口启动了帮助浏览器,然后又启动了模式子对话框(即在消除子对话框之前不能操纵父框架),则不能操纵帮助浏览器。它是父框架的子级,而不是子对话框的子级。因此,即使您经过父对话框从子对话框更新帮助浏览器中的帮助主题,虽然新主题会出现,但是您不能选中帮助浏览器并浏览目录。 除了实现 HelpSet 和 HelpBroker 类关系外,我们使用自己的帮助实用程序来解决此问题。
实现一个帮助实用程序类 我们创建了一个称为 StudioHelp 的类,它允许开发人员容易地显示某个特定帮助主题。要使用 StudioHelp 类,开发人员必须在其应用程序中做两件事:初始化 StudioHelp,以使用正确的帮助集;调用 通过在显示帮助浏览器的激活窗口之前设置,我们解决了上一节说明的模态问题。这就重新建立了浏览器窗口的父级,并使单个 HelpBroker 实例能够为所有的模式或非模式对话框服务。 请查看 StudioHelp 类的源代码。 所用的 JavaHelp 函数
使用 StudioHelp 实用程序类
此步骤将借助要使用的相应 HelpSet 文件(如 然后,在应用程序中的每个对话框或框架对象中,您只须调用静态
可能的增强 您可以增强 StudioHelp 实用程序类,来对您的应用程序整合更多智能。例如,如果 StudioHelp 在您产品的多个应用程序之间共享,则您可以给予 StudioHelp 主权,让它根据 HelpSet 文件的初始化方式来指定正确的 HelpSet 文件,从而免除不同应用程序开发人员要担负的这种责任。例如,您可以指定一些静态标识符作为
CheckBalanceApp 可以被定义为 StudioHelp 类中的一个静态整数:
在
结论 JavaHelp 软件是一个多功能的有用工具,用于将帮助整合到基于 Java 的用户界面应用程序。在现有应用程序项目中部署此技术的最简单方法是,将维护 JavaHelp 的复杂性和开销封装在一个实用程序类中,并教会开发人员使用一个更为简化的接口,在应用程序中包括帮助功能。 |
JavaHelp软件的一个定制实用程序类相关推荐
- 回调函数_实用程序类与函数式编程无关
回调函数 最近,我被指控反对函数式编程,因为我将实用程序类称为反模式. 绝对是错的! 好吧,我确实认为它们是一种糟糕的反模式,但是它们与函数式编程无关. 我相信有两个基本原因. 首先,函数式编程是声明 ...
- 声明式编程与函数式编程_实用程序类与函数式编程无关
声明式编程与函数式编程 最近,我被指控反对函数式编程,因为我将实用程序类称为反模式 . 绝对是错的! 好吧,我确实认为它们是一个糟糕的反模式,但是它们与函数式编程无关. 我相信有两个基本原因. 首先, ...
- oop 类和对象的_实用程序类的OOP替代
oop 类和对象的 实用程序类(也称为帮助程序类)是仅具有静态方法且不封装状态的"结构". StringUtils , IOUtils , FileUtils从Apache的共享 ...
- 实用程序类与函数式编程无关
最近,我被指控反对函数式编程,因为我将实用程序类称为反模式 . 绝对是错的! 好吧,我确实认为它们是一种糟糕的反模式,但是它们与函数式编程无关. 我相信有两个基本原因. 首先,函数式编程是声明性的,而 ...
- 实用程序类的OOP替代
实用程序类(也称为帮助程序类)是仅具有静态方法且不封装任何状态的"结构". StringUtils , IOUtils , FileUtils从Apache的共享 ; Guava的 ...
- hadoop中实现定制Writable类
Hadoop中有一套Writable实现可以满足大部分需求,但是在有些情况下,我们需要根据自己的需要构造一个新的实现,有了定制的Writable,我们就可以完全控制二进制表示和排序顺序. 为了演示如何 ...
- python自己做个定时器_python 创建一个自己的类计时器
前言: 学习了python的类之后收获颇多,于是想利用类创建一个简单的计时器 第一代版本 首先要明确自己的timer想要实现的功能-先列一些简单的吧 比如:开始计时的功能,停止计时的功能,有一些简单的 ...
- php 分页类视频,php分页类_你不可错过的一个php分页类
摘要 腾兴网为您分享:你不可错过的一个php分页类,榛果民宿,闲鱼,嘻嘻动漫,天气预报等软件知识,以及星空视频壁纸,灵狐者透视,时间闹钟,联想lj2205打印机驱动,轮流值班表范本,计分器软件,各有所 ...
- 小程序使用sass_如何使用Sass Maps生成所有实用程序类
小程序使用sass by Sarah Dayan 通过莎拉·达扬 如何使用Sass Maps生成所有实用程序类 (How to generate all your utility classes wi ...
最新文章
- Mybatis获取插入记录的自增长ID
- Clever Answers in Codewar(Javascript 持续更新)
- java中为什么不能通过getClass().getName()获取父类的类名
- linux $变量含义($0,$1,$2,$#,$@) ----linux 基础
- python 期货交易_Python期货量化交易基础教程(8)
- django 单元测试小结
- git作死之天坑记录
- 常用音频软件:Wavesufer
- Java系列(1) JavaEE架构
- .NET跨平台实践:.NetCore、.Net5/6 Linux守护进程设计
- 飞畅科技-工业以太网交换机组网方式介绍
- ACM中java快速入门
- java volatile线程可见_吃透Java并发:volatile是怎么保证可见性的
- 运营方法 - 运营的思考方法
- php 获取提成的公式,拿提成的工资怎么算的有公式吗_工资提成计算公式
- 商人必看的20大电影
- SQL Server 自定义快捷键。
- python是黑客攻防第一语言么_为什么选择python编程语言入门黑客攻防 给你几个理由!...
- PFO-Ir|PFO-Ir-OXD|D-Ir-Caz|D-Ir-OXD离子型铱配合物共轭聚合物
- PR第二次培训笔记(基本剪辑步骤 导出)
热门文章
- 2013汇总计算 广联达gcl_完整工程量计算书分享:广联达+EXCEL计算表+电子+工程模板等赠送...
- esxi ntp服务器地址_NTP的工作原理以及工作模式
- electron 托盘图标闪烁_从零到一,用 Electron 开发桌面效率工具
- 查询mysql数量_科研学习记录--MySQL
- python字符串出栈方法_python字符串常用方法
- SpringBoot2.0配置redis相关
- Dart In Action -Dart快速入门(二)
- JavaScript 小知识点
- trunk中继链路,以太网通道
- Golang websocket