当前位置: 首页 > news >正文

java --help_java help

制作java应用程序的帮助文件 (转)

如果你使用过JBuilder,并且看过它的帮助的话,

想不想让你自己的应用程序也有个这么专业的帮助呢?

事实上做起来是很简单的,sun提供了一个JavaHelp可以帮助我们

实现这个目的。

使用javaHelp为应用添加帮助有两个步骤:

1,制作帮助文件(helpSet)。现在先让我们来制作helpSet吧,打开http://java.sun.com/products/javahelp/DOWNLOAD_binary.html.

下载一个zip版本的JavaHelp,目前最高好像是1.1.3。

开始制作一个名为"Hello,JavaHelp"的HelpSet,创建一个目录:"help",help下面再创建一个目录"hello"

在hello目录下面创建两个目录"First","Last",结构如下:

+ help

+ Hello

+ First

+ Last

目录建好了以后,我们要在Help目录下面写出四个文件:hello.hs,Map.jhm,index.XML以及toc.xml

hello.hs:

/p>

PUBLIC "-//Sun Microsystems Inc.//DTD JavaHelp HelpSet Version 1.0//EN"

"http://java.sun.com/products/javahelp/helpset_1_0.dtd">

Hello, JavaHelp

overview

TOC

TOC

javax.help.TOCView

toc.xml

Index

Index

javax.help.IndexView

index.xml

下面是Map.jhm文件的内容:

/p>

PUBLIC "-//Sun Microsystems Inc.//DTD JavaHelp Map Version 1.0//EN"

"http://java.sun.com/products/javahelp/map_1_0.dtd">

下面是index.xml文件的内容:

/p>

PUBLIC "-//Sun Microsystems Inc.//DTD JavaHelp Index Version 1.0//EN"

"http://java.sun.com/products/javahelp/index_1_0.dtd">

下面是toc.xml文件的内容:

/p>

PUBLIC "-//Sun Microsystems Inc.//DTD JavaHelp TOC Version 1.0//EN"

"http://java.sun.com/products/javahelp/toc_1_0.dtd">

创建好以上四个文件以后,记得把它们放到help目录下面,

现在需要四个htm文件,把帮助内容写在htm里面,

Hello/overview.htm

Hello/First/one.htm

Hello/First/two.htm

Hello/Last/three.htm

Hello/Last/four.htm

那么现在Help目录下的结构就变成了下面一样:

+ help

hello.hs

index.xml

Map.jhm

toc.xml

+ Hello

overview.htm

+ First

one.htm

two.htm

+ Last

three.htm

four.htm

还记得开始让你下载的JavaHelp吗?解包以后在jh1.1.3demosbin目录下面有个hsviewer.jar文件

我们用它来查看帮助文件是否做得完美,将hsviewer.jar加入到classpath里面

假如jh1.1.3解压到了E:,

set classpath=%classpath%;E:jh1.1.3demosbinhsviewer.jar

然后执行:

java sunw.demo.jhdemo.JHLauncher

有一个图形界面出来,按浏览按钮找到Helphello.hs文件,按display显示帮助文件。

helpset显示如下图:

0818b9ca8b590ca3270a3433284dd417.png

2,将帮助加到你的应用中来。

本质上,将应用程序和HelpSet联系起来的方法就是

将帮助文件名映射到swing的组件里来。这时你需要jh.jar

这个文件在jh1.1.3javahelplib里面,你必须把它加入classpath

或者是拷贝到jrelibext目录下。如果你用JBuilder,可以在菜单

Tools的Configure Libraries里面增加一个Lib,选择jh.jar,然后在

Project里面选择使用这个Lib。

javahelp的lib不小,其实核心的三个类HelpSet, HelpBroker,和CSH

就可以使javahelp运行起来了。

首先导入javahelp的类:

import javax.help.*;

然后你得找到HelpSet文件,通过包含HelpSet的URL对象

或者使用HelpSet类的findHelpSet方法得到URL对象,

findHelpSet方法通过ClaSSLoader找到帮助文件。

有了URL对象以后就可以构造一个HelpSet对象了:

import java.NET.*;

...

HelpSet helpset = null;

ClassLoader loader = null;

URL url = HelpSet.findHelpSet(loader, "hello.hs");

try {

helpset = new HelpSet(loader, url);

} catch (HelpSetException e) {

System.err.println("Error loading");

return;

}

然后你要从helpset得到HelpBroker对象 。

HelpBroker helpbroker = helpset.createHelpBroker();

最后是帮助跟组件的绑定。

ActionListener listener =

new CSH.DisplayHelpFromsource(helpbroker);

overview.addActionListener(listener);

完整代码如下:

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import javax.help.*;

import java.net.*;

public class HelloHelp {

public static void main(String args[]) {

JFrame frame = new JFrame("Hello, JavaHelp");

frame.setDefaultCloseOperation(

JFrame.EXIT_ON_CLOSE);

Container content = frame.getContentPane();

JMenuBar menubar = new JMenuBar();

JMenu helpMenu = new JMenu("Help");

JMenuItem overview = new JMenuItem("Overview");

JMenuItem specific = new JMenuItem("Specific");

helpMenu.add(overview);

helpMenu.add(specific);

menubar.add(helpMenu);

frame.setJMenuBar(menubar);

JButton button1 = new JButton("The Button");

JButton button2 = new JButton("Context");

content.add(button1, BorderLayout.NORTH);

content.add(button2, BorderLayout.SOUTH);

HelpSet helpset = null;

ClassLoader loader = null;

URL url = HelpSet.findHelpSet(loader, "hello.hs");

try {

helpset = new HelpSet(loader, url);

} catch (HelpSetException e) {

System.err.println("Error loading");

return;

}

HelpBroker helpbroker = helpset.createHelpBroker();

ActionListener listener =

new CSH.DisplayHelpFromSource(helpbroker);

overview.addActionListener(listener);

CSH.setHelpIDString(specific, "one");

specific.addActionListener(listener);

CSH.setHelpIDString(button1, "two");

ActionListener tracker =

new CSH.DisplayHelpAfterTracking(helpbroker);

button2.addActionListener(tracker);

JrootPane rootpane = frame.getRootPane();

helpbroker.enableHelpKey(rootpane, "three", helpset);

frame.setSize(200, 200);

frame.show();

}

}

以上目录和文件以及程序你可以在http://www.jzventures.com/javahelp.zip下载。

相关文章:

  • java linux 接口_理解Java中的接口
  • java dns 缓存_Java DNS解析缓存的过期策略配置
  • java 二叉树图形_java实现二叉树以及实例
  • java tree的使用_Java TreeSet的使用
  • java矩形_JAVA实现矩形(长方形)的周长面积计算
  • phymeleaf 除取整_【Bug档案01】Spring Boot的控制器+thymeleaf模板 -使用中出现静态资源加载路径不当的问题 -解决时间:3h...
  • python 矩阵乘法梯度下降_使用python numpy矩阵类的梯度下降
  • oracle 存储过程调用java_oracle 存储过程调用java一
  • java春天_java – 春天的Aspectj
  • java开发微信设计论文_集客微信公众号: 本科毕业设计:基于WxJava框架的集客微信公众号的设计与实现...
  • java 判断是不是英文怎么说_java判断一个字符串是中文还是英文
  • linux+mysql运算符_MySQL 运算符
  • saxreader java_SAXReader saxReader = new SAXReader();来解析xml文件
  • 埃森哲java转sfdc_【SFDC salesforce职责】2021年埃森哲SFDC salesforce岗位职责-看准网...
  • JAVA循环读取菜单_java循环菜单
  • [译]CSS 居中(Center)方法大合集
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • C++类的相互关联
  • Docker入门(二) - Dockerfile
  • ECMAScript入门(七)--Module语法
  • es6(二):字符串的扩展
  • isset在php5.6-和php7.0+的一些差异
  • JavaScript-Array类型
  • Java知识点总结(JavaIO-打印流)
  • Python socket服务器端、客户端传送信息
  • 多线程 start 和 run 方法到底有什么区别?
  • 复习Javascript专题(四):js中的深浅拷贝
  • 如何进阶一名有竞争力的程序员?
  • 思维导图—你不知道的JavaScript中卷
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • #1014 : Trie树
  • ${factoryList }后面有空格不影响
  • (arch)linux 转换文件编码格式
  • (C语言)共用体union的用法举例
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (一)kafka实战——kafka源码编译启动
  • (原)本想说脏话,奈何已放下
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)大型网站的系统架构
  • .gitattributes 文件
  • .NET 4.0中的泛型协变和反变
  • .NET delegate 委托 、 Event 事件,接口回调
  • .Net 代码性能 - (1)
  • .net程序集学习心得
  • [ Linux ] Linux信号概述 信号的产生
  • [@Controller]4 详解@ModelAttribute
  • [2016.7 test.5] T1
  • [Android Studio] 开发Java 程序
  • [bzoj1038][ZJOI2008]瞭望塔
  • [Bzoj4722]由乃(线段树好题)(倍增处理模数小快速幂)
  • [C#]扩展方法
  • [C++]高精度 bign (重载运算符版本)