巧用Java中的JTree和卡片布局制作帮助文档

时间:2022-08-07 07:40:18

巧用Java中的JTree和卡片布局制作帮助文档

摘要 JTree是Java中的树形菜单,它可以用树状结构分层显示菜单信息,并且可以折叠使用,非常主观又清晰。卡片布局管理器则可以将多个组件叠放起来,每次只显示一个,就像扑克牌一样每次只能看到最上面的一张。本文通过触发JTree的结点选择事件,来实现浏览不同卡片内容,从而完成帮助文档的制作过程。

关键词 Jtree;Java;卡片布局管理器;帮助文档

中图分类号TP312 文献标识码A 文章编号 1674-6708(2010)22-0207-02

在使用Java语言开发应用程序时,常常需要为程序制作必要的帮助文档,通常情况下,会先采用大家比较熟悉的网页设计工具Dreamweaver制作出简单漂亮的HTML格式帮助文档,然后再采用EasyCHM或QuickCHM等小工具,将该HTML帮助文档转换成压缩比较高的CHM电子文档格式,最后在Java程序中通过调用外部命令的方式:Runtime.getRuntime().exec(“路径”),将CHM帮助文档导入我们的应用程序。

最近一段时间,常在Java论坛中看到不少程序爱好者问到如何用Java开发帮助文档。本文主要采用JTree和卡片布局完成目录的选择和不同页面的交替显示效果,效果如图1所示。

本文分两种情况来讨论该效果图实现的方法和步骤:

1)如果帮助文档目录内容较少时,用NetBeans工具直接拖拽组件的方式完成,下面简要介绍该帮助文档的编写步骤,这里采用的是NetBean6.8版本。

(1)创建JFrame窗体

①设置该窗体的标题为:“巧用JTree和卡片布局制作帮助文档”,布局为边框式布局;

②在窗体“North”方位,加入工具栏JToolBar,在工具栏中加入四个按钮并设置图标;

③在窗体“Center”方位,加入分隔窗格JSplitPane,为其命名为“hsp”,窗格的orientation属性值为:HORIZONTAL_SPLIT,即窗格分为左右两边。

(2)窗格“hsp”左边

①加入标签窗格JTabbedPane,在该窗格中添加3个面板,标题分别命名为“目录”、“索引”、“搜索”,这里我们主要讲解“目录”部分;

②在“目录”面板中添加JTree(名为“mytree”),设置模型TreeModel,修改各节点标题。

(3)窗格“hsp”右边

①加入面板JPanel(名为“rightPanel”),设置其布局为CardLayout;在程序的声明部分定义CardLayout card = new CardLayout();然后为rightPanel定制代码,用rightPanel.setLayout(card)覆盖系统自动生成的代码:rightPanel.setLayout(new java.awt.CardLayout());

②在rightPanel中添加JTextPane,系统会自动为其加上滚动窗格JScrollPane,这里我们将其命名为sp1,在文本窗格JTextPane中添加文字或图片内容,接着加入第二个、第三个JTextPane,并分别为其滚动窗格命名为sp2,sp3……

③在程序的初始化部分,添加代码righPanel.add(sp1,“左边对应节点1”); righPanel.add(sp2,“左边对应节点2”);……

(4)为“mytree”添加事件

private void mytreeValueChanged(javax.swing.event.TreeSelectionEvent evt) {

DefaultMutableTreeNode selectionNode = (DefaultMutableTreeNode)mytree.getLastSelectedPathComponent(); // 获取选中的节点

String nodename = selectionNode.toString();// 将选中的节点转换为字符串:

card.show(rightPanel,nodename);// 显示rightPanel中的选定节点对应的卡片。

}//事件结束。

2)如果单纯写代码,或目录项比较多,可考虑使用数组,实现的简易效果图如图2所示,实现的主要步骤如下:

(1)创建JFrame窗体

①设置该窗体的标题为:“数组方法”;②在窗体中加入分隔窗格JSplitPane,为其命名为“hsp”,窗格的orientation属性值为:HORIZONTAL_SPLIT,即窗格分为左右两边。

(2)窗格“hsp”左边

①添加JTree,为其命名为“mytree”;

②在程序声明部分添加如下代码:

//数组nodenames存放所有树节点

String nodenames[] = {"关于此文档", "API", "All Classes", "JTree", "CardLayout", "TreeModel", "JTabbedPane", "JDK", java","javac","javadoc","PlatForm","window","unix"};

int len = nodenames.length; // len表示节点长度

DefaultMutableTreeNode nodes[]=new DefaultMutableTreeNode[len+1]; //包含根节点“root”。

③在mytree的定制代码部分加入以下代码:

nodes[0]= new DefaultMutableTreeNode("root");//定义根结点

for(int i=1;i

{ nodes[i]= new DefaultMutableTreeNode(nodenames[i-1]); }//定义除根结点以外的其他节点

nodes[0].add(nodes[1]); nodes[0].add(nodes[2]);nodes[2].add(nodes[3]);

for(int i=4;i

nodes[0].add(nodes[8]);

for(int i=9;i

for(int i=13;i

上一篇:浅谈城镇地籍的科学管理 下一篇:浅谈草坪建植技术在城市园林绿化工程中的应用