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

如果你现在正在寻找一个跨平台、资源开放的XML编辑器的话,您可能很快就能够实现这个愿望了。在这个三部分系列文章中,我将带您利用一些最通常的Java 2 Swing组件开发一个简单的 XML编辑器。本系列将有益于那些想编写他们的自己的XML编辑器的朋友或者帮助您学习或温习Swing。

这是本系列的第三篇文章。在第一个篇文章中,我们简要地讨论了XML和为什么树形结构适合显示XML、如何处理XML 数据、如何使用JTree Swing组件,并且我们还构建一个可重用组件用来解析XML文件并在JTree中显示数据。

在第二篇文章中,我们创建了用于我们XML编辑器的框架结构。为了做到这个目的,我们谈到了许多Swing组件(包括 JSplitPane、JScrollPane、 JButton和JTextArea )。 JSplitPane对象又包含了两个JScrollPane对象,一个用于XML的图形化浏览,另外一个用于文本浏览。

在这最后一篇文章中,我们将把最后的界面添加到 XML编辑器中,使它能够更加用户友好化。我们将先构建一个菜单系统,然后继续构造访问基层文件系统的JFileChooser组件来允许保存XML文件并打开新建文档。最后,我们将构建一个JDialog框,使用户能够取消一个命令并退出应用程序。

那么如何增强我们的Swing应用程序的性能,以使它们利用菜单,访问文件系统并允许用户取消操作呢?我们需要创建JMenu组件来处理应用程序的菜单,创建JFileChooser组件来访问基层文件系统,使用JDialog框来允许用户取消操作。

在以前的文章中,我们开发了XTree类——一个衍生于 JTree类的可重用组件,能够把 XML数据以图形化树来显示。因为我们喜欢使用面向对象原则,我们今天所做的修改不会接触那个类。因为我们喜欢使用面向对象原则,我们今天所做的修改不会接触那个类。它是一个自包含可重复使用的类,被我们的JFrame容器使用而不是被结合。

第一节 构建菜单组件

一个JMenu组件包括几个对象:一个菜单栏、一个或更多菜单和一个或更多菜单项。菜单栏包含菜单,而菜单又包含菜单项。这些Swing组件的名称都相当直观的(分别为 JMenuBar、JMenu和 JMenuItem)。

下面是创建一个包含单一菜单项的最小的" File "菜单的全部的代码:

JMenu fileMenu = new JMenu( "File" );
JmenuItem exitItem = new JMenuItem( "Exit" );
fileMenu.add( exitItem );
JmenuBar menuBar = new JMenuBar();

menuBar.add( fileMenu );
setJMenuBar( menuBar );

这个过程我们应该非常熟悉,JMenu组件使在任何其他 Java GUI组件构建时创建的。最内部的元素被加到它们的直接父元素中,直到所有的元素都已定义了一个适当的容器。

返回XmlEditor个案研究中,我们实际上已经创建了一个完整的文件菜单,有创建新的 XML文件、打开一个现有的文件、保存文件和退出的功能。我们将在下一小节中详细谈谈它。

第二节 处理菜单事件

我们想要创建一个典型的文件菜单,能让我们的用户创建一个新文档,打开一个现有的文件,保存当前的文件并退出应用程序。既然我们知道如何构建这个菜单,那么我们如何响应用户的菜单选择呢?和其他Swing组件一样,答案就在于事件模型和可用的监听者组件。

处理一个菜单选择最基本的方法就是把一个作用监听者添加到菜单项中: exitItem.addActionListener(new exitMenuHandler());当处理复杂的事件处理时(因为菜单系统有可能变得很复杂),应当把事件处理程序定义成单独的类。上面给出的那个例子添加一个exitMenuHandler类型的行动监听者。这个类型稍后将在这个应用程序中定义。下面是一个定义exitMenuHandler类所需要最少的代码:

class exitMenuHandler implements ActionListener {
public void actionPerformed( ActionEvent ae ) {
System.exit(0);
}
}

虽然这个实现用来证明一个单独类的定义可能似乎太过简单了,但是当我们定义用于打开并保存文件的事件处理代码时,你将认识到把单独的功能性放入单独的类文件的重要性。此外,这个方法将允许你在不同的应用程序之间重复使用公共菜单功能。

时间: 2025-01-01 16:15:48

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

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

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

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

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

使用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的一些子库.不管它的名字是什么,日期的类并