介绍JTree Swing组件

开发 后端
本文介绍JTree Swing组件,以及介绍如何使用JTree Swing组件和创建一个属于你自己的XML编辑器。

我想您一定对XML有所了解,说不定您现在还跃跃欲试想写一段XML文本呢,可是现在能找到的跨平台的、免费的XML编辑器太少了。所以在本文中,我想介绍一下或者说带您一步一步的开发一个简单的XML编辑器,当然我们要用到一些最常见的JTree Swing组件,不过这些都是免费的,有些是JDK中的,有些是可以从网上下载的。我想通过本文,你就可以创建一个属于你自己的XML编辑器。

先让我介绍一下本文辑写的思路。首先我想简要的讨论一下XML和为什么树型结构比较适合用来显示XML,然后我们来看一看JAXP API如何建立所需要的XML类的环境;然后我们将了解用来显示一个图形树的JTree Swing组件;最后,我们将创建一个继承JTree组件的可以重复使用的类,可以用来分析一个XML文档,并把数据显示在一个Jtree中。

说到XML(eXtensible Markup Languge),人们往往把它当成是一种新的用于Web浏览器中的标记语言,就象HTML或CSS一样。其实,XML是一种数据表示语言,它允许你使用一种非常有效的方法来描述你的数据。XML能够使你定义诸如“these three words constitutes a heading”这样的语句。XML允许你声明任何类型的数据,而不是用来把这些数据显示在网页中。

请看一看下面的XML实例:

  1. <article>  
  2. <header>  
  3. <title>   
  4. <subtitle> </subtitle>  
  5. </title>  
  6. <author> Wayne </author>  
  7. <header>  
  8. <content> </content>  
  9. </article> 

请注意,这些元素和标准的HTML语句是不同的,但是它们看上去比较象HTML,这是因为XML和HTML都是来源于SGML语言。不同的是HTML有预定义的标签集,而XML的语法则有许多灵活性,它允许你使用表意的标记如< author>来括在数据两边。你还要注意,所有的元素都从属于根元素(上例中为< article>),有些元素则还有自己的子元素,如< subtitle>就是< title>的子元素。这样的数据组织方式有三个好处:数据能够更加表意,数据更加易维护而且数据更加容易作为一个树的结构表现出来,这就是我们为什么使用JTree对象来显示XML数据的原因。如果你想对XML有更深的了解,请参阅天极网上的相关教程。

JAXP是一个用于处理XML的Java API,它能够使应用程序分析并且转化XML文档,它的功能有点象JDBC API,都是把函数功能抽象成一个个方法。你可以去Apache网站找到最新的Xerces分析器,其中含有最新的JAXP,下载下来以后把它放在你的类目录中。

下面让我们看一下如何使用JTree Swing组件。

我们都知道,在自然界中,一棵树通常都有一个非常粗的树干,树干上有许多树枝分叉。每个树杈和树杈之间都有一定的联系,因为它们都有同一个来源:树干。这种继承的关系并不只在树枝中有,人类谱系也遵循相同的规律。从父母,到子女再到子女的子女,就这样直到数不清为止。同样,在数据存储中,树的概念也是一种使用同人类家谱树一样方法储存数据的方法。树的每一个树杈称为一个节点,每个有子节点的节点称为父节点,所有的子节点的公共的父节点被称为根节点。一个JTree组件就是一个简单的树数据结构的可视化表现形式。

几乎所有的XML编辑器都包括一个可视化的树结构,能让你编辑XML文档中的元素。我们马上就会构建一个编辑器,不过在此之前,先让我们再了解一下JTree组件。一个节点在一棵树的某个位置储存数据,为了存储数据,必须知道任何一个父节点和它们的子节点。javax.swing.tree包定义了一些非常有用的接口,提供了一种通用的方法构建和操作一个树结构。

【编辑推荐】

  1. 浅析运行Swing应用程序
  2. 了解AWT和Swing组件
  3. Swing组件相关的操作
  4. 详解MVC设计模式与Swing
  5. 浅谈Swing和AWT构件
责任编辑:佚名 来源: 中国IT实验室
相关推荐

2009-07-15 10:52:13

JTree组件

2012-01-17 14:05:29

JavaSwing

2009-07-17 11:13:46

AWT和SwingSwing组件

2009-07-17 14:38:51

轻量级Swing组件

2009-07-15 13:06:38

Swing组件

2009-07-17 12:54:13

2009-07-10 13:36:32

Swing容器

2009-07-10 15:41:27

Swing AWT

2009-07-15 10:37:28

Swing外观

2009-07-15 11:02:32

Swing组件

2009-07-14 17:21:42

Swing组件

2009-07-10 12:30:12

Swing组件

2009-07-10 17:03:17

AWT组件Swing组件

2009-07-14 18:05:28

轻量级Swing组件

2009-07-10 16:29:32

Swing组件

2009-07-15 13:48:26

Swing模型和渲染器

2009-07-15 18:06:38

Swing线程

2009-07-10 14:41:57

Swing技术

2009-07-15 10:23:51

Swing SWT集成

2009-07-16 11:19:48

外部线程Swing组件
点赞
收藏

51CTO技术栈公众号