使用Java Swing创建一个XML编辑器

我想您一定对XML有所了解,说不定您现在还跃跃欲试想写一段XML文本呢,可是现在能找到的跨平台的、免费的XML编辑器太少了。所以在本文中,我想介绍一下或者说带您一步一步的开发一个简单的XML编辑器,当然我们要用到一些最常见的Java 2 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实例:

<article>
<header>
<title> 使用Java Swing 创建一个XML编辑器
<subtitle> 第一部分</subtitle>
</title>
<author> Wayne </author>
<header>
<content> 这是正文</content>
</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包定义了一些非常有用的接口,提供了一种通用的方法构建和操作一个树结构。

TreeNode方法,用于访问树的节点的信息

MutableTreeNode方法 用在一个可变的树上(能够添加或删除子节点)

TreeModel方法 用于创建和管理与树有关的数据模型。

接下来,我们将创建一个继承JTree的类,提供分析XML文档和用可视化JTree组件把节点显示出来的功能。

创建XTree组件

XTree类由一个构造函数和三个方法组成,为了简单起见我们的组件只能构建一个Xtree,在树创建好之后不能进行处理它的节点。下面让我们来看一个这个类。

域:

private DefaultMutableTreeNode treeNode 这个成员变量储存TreeNode对象用于存储JTree的模型。 

DefaultMutableTreeNode类是在javax.swing.tree中被定义的,默认提供了MutableTreeNode接口的一个实现。

private DocumentBuilderFactory dbf

private DocumentBuilder db

private Document doc 这三个成员变量是JAXP的一部分,用来分析XML文本并转化成DOM(Document Object Model) 对象。

时间: 2024-11-01 06:57:55

使用Java Swing创建一个XML编辑器的相关文章

使用Java Swing 创建一个XML编辑器

xml|创建 我想您一定对XML有所了解,说不定您现在还跃跃欲试想写一段XML文本呢,可是现在能找到的跨平台的.免费的XML编辑器太少了.所以在本文中,我想介绍一下或者说带您一步一步的开发一个简单的XML编辑器,当然我们要用到一些最常见的Java 2 Swing组件,不过这些都是免费的,有些是JDK中的,有些是可以从网上下载的.我想通过本文,你就可以创建一个属于你自己的XML编辑器. 先让我介绍一下本文辑写的思路.首先我想简要的讨论一下XML和为什么树型结构比较适合用来显示XML,然后我们来看一

使用Java Swing创建一个XML编辑器之三

如果你现在正在寻找一个跨平台.资源开放的XML编辑器的话,您可能很快就能够实现这个愿望了.在这个三部分系列文章中,我将带您利用一些最通常的Java 2 Swing组件开发一个简单的 XML编辑器.本系列将有益于那些想编写他们的自己的XML编辑器的朋友或者帮助您学习或温习Swing. 这是本系列的第三篇文章.在第一个篇文章中,我们简要地讨论了XML和为什么树形结构适合显示XML.如何处理XML 数据.如何使用JTree Swing组件,并且我们还构建一个可重用组件用来解析XML文件并在JTree中

使用Java Swing创建一个XML编辑器之二

这是本系列的第二篇文章.在上一篇文章中,我们简要地讨论了XML以及为什么一个树形结构适合显示XML.如何处理XML数据.如何使用JTree Swing 组件以及如何创建一个可重用的能够分析XML文档以及在Jtree显示数据的组件. 在本文中,我们将创建我们的XML编辑器的框架,为了达到这个目的,我们将用到许多Swing组件(包括JsplitPane.JscrollPane.Jbutton和JtextArea组件). 一.问题的提出与解决 我如何创建一个能够浏览文本和浏览视图的XML文本编辑器呢?

《Java 2D游戏编程入门》—— 8.3 创建一个原型编辑器

8.3 创建一个原型编辑器 现在是时候创建一些多边形了.尽管有可能可以猜到每个点,但要创建9个小行星形状,手动进行的话,工作量还是很大的.就像大多数程序一样,我也很懒.编写一个编辑器来创建多边形,这样会容易很多.位于javagames.prototype包中的PrototypeEditor,如图8.9所示. 如果模型存储为文件,它们将在运行时加载.然而,做这些事情所需的代码还没有介绍过,因此,编辑器将会作弊.当按下空格键的时候,编辑器会产生出能够粘贴到其他源文件中的代码.本书的第二部分将会介绍使

java swing中一个JTree如何在多个panel中显示

问题描述 java swing中一个JTree如何在多个panel中显示 要实现的功能是 需要在2个panel(A, B )中显示用户组的树结构, 其中有一个panel(B)中提供了对树的增删改,运行程序首先显示A, 通过A上的按钮点击事件显示B, 要在B更改同时更新A上的显示情况, 现在遇到的情况是:当点击A上的按钮显示B时,A上的tree就不见了: 怎么解决啊? A的部分代码 DefaultMutableTreeNode root = new DefaultMutableTreeNode("

java swing的一个小小问题,望高手不吝赐教!

问题描述 java swing的一个小小问题,望高手不吝赐教! java swing中的JFrame加载背景图片后会覆盖掉所有可视组件,求教怎么办? 解决方案 设置下ComponentZOrder 解决方案二: 是ComponentZOrder的问题,去设置一下 解决方案三: 可能是用了drawImage方法导致的,给Frame绘制了Image和设置背景不同

Java Swing创建自定义闪屏:在闪屏上添加Swing进度条控件(转)

  本文将讲解如何做一个类似MyEclipse启动画面的闪屏,为Java Swing应用程序增添魅力.   首先看一下效果图吧,       原理很简单,就是创建一个Dialog,Dialog有一个进度条和一个Label用来分别显示进度和进度信息,而Dialog的宽度和高度正是闪屏图片的宽度和高度.然后将闪屏图片贴到Dialog中作为整个窗体的背景,Dialog显示时覆盖闪屏所处的区域.由于Dialog显示时闪屏并没有消失,且Dialog的X.Y及宽高都与闪屏图片一致,因此实际切换时,非常流畅,

关于在windows mobile上创建一个.xml数据库文件时出错

问题描述 代码如下:usingSystem;usingSystem.Linq;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Data.SqlClient;usingSystem.Data.SqlServerCe;usingSystem.Xml;

用Java Swing作一个日历控制程序

日期是最基本的数据形式之一,因此很多语言或者数据库都提供了对日期的支持,或内置或提供这一类的库.Java也不例外:Java的应用编程接口提供了以跨平台独立语言的方式描述,计算,对比,显示以及便携式分析日期.在这篇文章里,我要讲讲关于Swing的自定义控制,允许你在视觉上获取时间信息而不是用敲命令的方式.用这种方法,你可以避免无效的时间信息,让你的使用者以视觉的方式得到享受. Java中的日期 Java描述日期和时间的方法使用传统的Date命令或者Java的一些子库.不管它的名字是什么,日期的类并