|
将 JavaHelp 添加到应用程序中
现在您已经为应用程序开发了一个帮助信息系统,那么接下来的问题很自然就是如何如何将该系统加入到您的应用程序当中。 将帮助信息系统集成到应用程序中所需代码的数量取决于您希望将该帮助信息系统作为应用程序的一部分,还是希望将该帮助信息系统作为另外一个独立的应用程序,例如,当单击帮助按钮时,就显示出该窗口。然而,在两种情况下,将 JavaHelp 添加到一个应用程序中就和下面的 1-2-3 一样容易:
·创建 HelpSet 和 HelpBroker 对象。
·将帮助赋给单个组件。
·为单个组件添加适当的帮助回调。
示例代码 6 显示了如何将上面所开发的帮助信息系统添加到一个应用程序中,当选中帮助菜单项时,系统会显示出帮助信息窗口。作为一个练习,您可能希望对代码进行重新的设计,使其能够容易的集成到任何的应用程序当中。
示例代码 6: HelpMenu.java
import java.net.*;
import javax.help.*;
import javax.swing.*;
import java.awt.event.*;
public class HelpMenu {
JFrame f;
JMenuItem topics;
public HelpMenu() {
f = new JFrame("Menu Example");
JMenuBar mbar = new JMenuBar();
// a file menu
JMenu file = new JMenu("File");
JMenu help = new JMenu("Help");
// add an item to the help menu
help.add(topics = new JMenuItem("Help Topics"));
// add the menu items to the menu bar
mbar.add(file);
mbar.add(help);
// 1. create HelpSet and HelpBroker objects
HelpSet hs = getHelpSet("sample.hs");
HelpBroker hb = hs.createHelpBroker();
// 2. assign help to components
CSH.setHelpIDString(topics, "top");
// 3. handle events
topics.addActionListener(new CSH.DisplayHelpFromSource(hb));
// attach menubar to frame, set its size, and make it visible
f.setJMenuBar(mbar);
f.setSize(500, 300);
f.setVisible(true);
}
/**
* find the helpset file and create a HelpSet object
*/
public HelpSet getHelpSet(String helpsetfile) {
HelpSet hs = null;
ClassLoader cl = this.getClass().getClassLoader();
try {
URL hsURL = HelpSet.findHelpSet(cl, helpsetfile);
hs = new HelpSet(null, hsURL);
} catch(Exception ee) {
System.out.println("HelpSet: "+ee.getMessage());
System.out.println("HelpSet: "+ helpsetfile + " not found");
}
return hs;
}
public static void main(String argv[]) {
new HelpMenu();
}
} 实验该代码的最简单的方法是将 HelpMenu.java 拷贝至 c:\myhelp下。编译并运行它。如果一切正常,您会看到类似图 5 的情况。如果单击帮助主题( Help Topics), 那么就会出现图 4 中的帮助信息窗口。
 |
|
图 5: 单击帮助主题以调用 helpset 查看器 | | 基于服务器的帮助
JavaHelp 2.0 的一个新的功能特点是基于服务器的帮助( server-based help)。这是一个重要的功能,可使 JavaHelp 在浏览器窗口为基于 web 的应用程序提供帮助信息。使用新的 JavaHelp JST 标签库,可以很容易的将帮助信息添加到基于 web 的应用程序中。工作流程是:当浏览器发出一个 JSP 请求,Java 服务器将该请求转换成一个 Java Servlet,它使用 JavaHelp 库(jh.jar)和 JavaHelp 标签库(jhtags.jar)中的类从 helpset 中访问适当的信息,并向浏览器返回 HTML,也可能是 JavaScript 或者动态 HTML。图 6 显示的是一个基于 Web 的应用程序的帮助信息示例。
 |
|
图 6:基于服务器的帮助 | |
要了解有关基于服务器的帮助的更多信息,请参考:JavaHelp 2.0 规范。
结束语
JavaHelp API 是需要运行于异构环境当中的在线帮助信息系统之作者和开发人员的首选技术。JavaHelp 系统可为开发人员增值,并提供完整的软件应用程序,同时无需对编程和开发进行大量投资。此外,许多公司已经认可了 JavaHelp 系统,并计划使用该 API 来建立统一的界面,以进行显示和在内部和外部文档间导航。
本文中的示例代码描述了如何创建帮助信息文档,这些文档可以很容易的集成到新的和现有的应用程序当中。
|