?? 使用java swing創建一個xml編輯器之二.txt
字號:
使用Java Swing創建一個XML編輯器之二_應用篇_建站學院[最新動態]賽酷網急聘客服人員,詳情進入首 頁 ┊ 論 壇 ┊ 博 客
┊ 供 求 ┊ 商 城 ┊ 酷 站 ┊ 廣告聯系
下載:源碼 軟件 模板 素材 動易軟件產品:建網站 建商城 域名注冊 虛擬主機 托管 郵局
資訊:學院 IT資訊 域名資訊 電子商務增值:域名策劃 網站設計|維護 網站推廣|優化|營銷
站外搜索: 百度 google
站內搜索: 文章 下載 圖片
┊建站學院┊建站指南┊網頁制作┊設計之窗┊seo專區┊數據庫┊服務器┊網絡安全┊ASP技術┊PHP技術┊JSP技術┊NET技術┊CGI技術┊
┊建站資源┊ ASP源碼┊ PHP源碼┊.NET源碼┊JSP源碼┊CGI源碼┊FLASH源碼┊韓國模板┊歐美模板┊素材大全┊ 站長軟件┊書籍教程┊
www. .com¥55 .cn¥25 .mobi cn域名15元,立即搶注
300M空間+100M郵局=100元
您現在的位置: 賽酷網絡 >> 建站學院 >> JSP >> 應用篇 >> 文章正文 用戶登錄 新用戶注冊
使用Java Swing創建一個XML編輯器之二 ★★★★【字體:小 大】
使用Java Swing創建一個XML編輯器之二
作者:佚名 文章來源:賽酷建站 點擊數:168 更新時間:2006-8-20
這是本系列的第二篇文章。在上一篇文章中,我們簡要地討論了XML以及為什么一個樹形結構適合顯示XML、如何處理XML數據、如何使用JTree
Swing 組件以及如何創建一個可重用的能夠分析XML文檔以及在Jtree顯示數據的組件。
在本文中,我們將創建我們的XML編輯器的框架,為了達到這個目的,我們將用到許多Swing組件(包括JsplitPane、JscrollPane、Jbutton和JtextArea組件)。
一、問題的提出與解決
我如何創建一個能夠瀏覽文本和瀏覽視圖的XML文本編輯器呢?創建一個包含Jbutton和JsplitPane的Jframe對象,
然后讓JsplitPane對象包含兩個JscrollPane對象,一個用于瀏覽圖形(xTree類),另一個用于瀏覽文本(JtextArea類)。Jbutton用來管理刷新圖形瀏覽的操作。
二、增強Xtree類的功能
在上一篇文章中,我們開發了Xtree類,這是一個可重用的組件,繼承于Jtree類并能夠把XML數據以圖形樹的形式顯示。我們現在就增強這個類,
通過提供給它一個在顯示默認的XML樹來We will now enhance that class by providing
it with a default XML
tree to display in the event that an XML file is not supplied
at the command-line. 而且,我們還將添加一些錯誤處理邏輯以便程序不會因為無效的XML而崩潰。
第一步是創建一個名為buildTree()的方法:
private DefaultTreeModel buildTree( String text )
{
DefaultMutableTreeNode treeNode;
Node newNode;
// 采用DOM根節點并把它轉化成為一個Tree模型
newNode = parseXml( text );
if ( newNode != null )
{
treeNode = createTreeNode( newNode );
return new DefaultTreeModel( treeNode );
}
else
return null;
} //結束buildTree()
這個方法取得傳入的 XML字符串,分析這個
XML字符串并構造一個可以用來從數據中構造圖形樹形結構的DefaultTreeModel變量實例。這個功能原來包含在
XTree()構造程序中,但是我們把它拿出來然后把它放進一個單獨的方法中,這樣我們就有了創建一個默認圖形樹的伸縮性。這就是我們接下來想做的事。
接下來一步是創建一個叫
buildWelcomeTree()的方法。這個方法一次構建一個DefaultTreeModel變量,而不是通過分析一個現有的XML文字字符串。如果用戶沒有指定
XML文件就啟動這個應用程序,將顯示 DefaultTreeModel。見代碼段1
代碼段1:
private DefaultTreeModel buildWelcomeTree()
{
DefaultMutableTreeNode root;
DefaultMutableTreeNode instructions, openingDoc,
editingDoc, savingDoc;
DefaultMutableTreeNode openingDocText, editingDocText,
savingDocText;
DefaultMutableTreeNode development, addingFeatures,
contactingKyle;
root = new DefaultMutableTreeNode( \"Welcome to XML View
1.0\" );
instructions = new DefaultMutableTreeNode( \"Instructions\"
);
openingDoc = new DefaultMutableTreeNode
( \"Opening XML Documents\" );
openingDocText = new DefaultMutableTreeNode
( \"When invoking the XmlEditor from
the command-line, you must specify the filename.\" );
editingDoc = new DefaultMutableTreeNode
( \"Editing an XML Document\" );
editingDocText = new DefaultMutableTreeNode
( \"XML text in the right hand frame
can be edited directly.
The \\\"refresh\\\" button will rebuild
the JTree in the left frame.\" );
savingDoc = new DefaultMutableTreeNode
( \"Saving an XML Document\" );
savingDocText = new DefaultMutableTreeNode
( \"This iteration of the XmlEditor does
not provide the ability to save your
document. That will come with the
next article.\" );
root.add( instructions );
instructions.add( openingDoc );
instructions.add( editingDoc );
openingDoc.add( openingDocText );
editingDoc.add( editingDocText );
return new DefaultTreeModel( root );
}
接下來的我們需要添加一個新的構造程序來簡化默認顯示功能,我們將修改主構造程序,這樣它就不能接受任何參數,創建一個新的能接收單一的
XML文本字符串的構造程序。這樣以來,如果沒有 XML文本被顯示的話就會創建默認 XTree對象,而如果
XML文本被顯示的話將創建一個唯一的 XTree對象。代碼段2中給出了兩個構造程序。
代碼段2:
public XTree( String text ) throws
ParserConfigurationException
{
this();
refresh( text );
}
public XTree() throws ParserConfigurationException
{
super();
getSelectionModel().setSelectionMode(
TreeSelectionModel.SINGLE_TREE_SELECTION );
setShowsRootHandles( true );
setEditable( false );
dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating( false );
db = dbf.newDocumentBuilder();
setModel( buildWelcomeTree() );
}
三、創建 XmlEditor類
XmlEditor類與前面的那篇文章的XTreeTester類有相同的用途,不同之處在于 XmlEditor包括一個
JTextArea,允許你操作文本版XML。之后,你可以點擊 “Refresh”按鈕并查看 XTree組件中反映出來的變化。
如果直接修改第一篇文章中的代碼,你就能節省很多時間,你可以把 XTreeTester.java文件重命名為
XmlEditor.java (不過一定要修改構造程序 )并把它當成模板文件。
要做的第一件事是添加下列 Swing組件:另一個 JScrollPane、 JSplitPane、 JTextArea和
JButton。通過聲明所有的這些組件以及其他組件開始(看代碼段3)。
代碼段3:
private XTree xTree;
private JScrollPane jScroll, jScrollRt;
private JSplitPane splitPane;
private JButton refreshButton;
private WindowListener winClosing;
首先,我們將創建并添加“ Refresh”按鈕。這個按鈕用來指示這個 XTree組件將使用當前
XML文本來刷新。我們還需要使用一個ActionListener來注冊它。(參見代碼段 4 )
為了攔截按鈕事件,我們需要有這個類還要實現 ActionListener,而且我們還需要創建一個
actionPerformed()方法 (參見代碼段 5 )。
代碼段4:
refreshButton = new JButton( \"Refresh\" );
refreshButton.setBorder(
BorderFactory.createRaisedBevelBorder() );
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -