?? 使用java swing創(chuàng)建一個(gè)xml編輯器之二.txt
字號:
refreshButton.addActionListener( this );
getContentPane().add( refreshButton, BorderLayout.NORTH );
代碼段5:
public void actionPerformed( ActionEvent ae )
{
if ( ae.getActionCommand().equals( \"Refresh\" ) )
xTree.refresh( textArea.getText() );
}
接下來,我們將創(chuàng)建新的 JScrollPane和 JTextArea并且把 JTextArea添加到
JScrollPane中。這樣,我們將得到包含 XTree組件的原始的 JScrollPane和包含
JTextArea組件的新的 JScrollPane。這個(gè)原始的
XTree構(gòu)造程序還有一個(gè)修改之處。我們將刪除先前傳進(jìn)這個(gè)方法的字符串參數(shù)。(該功能通過我們接下來要構(gòu)建的另一個(gè)
XmlEditor()構(gòu)造程序操作)我們把這兩個(gè)方框放進(jìn)一個(gè)
JSplitPane中,它是一個(gè)有分隔器的組件,可以在這個(gè)分隔器的另一邊包含一個(gè)組件。(參見代碼段6)。
代碼段6:
jScroll = new JScrollPane();
jScrollRt = new JScrollPane();
textArea = new JTextArea( 200,150 );
jScrollRt.getViewport().add( textArea );
xTree = new XTree();
xTree.getSelectionModel().setSelectionMode(
TreeSelectionModel.SINGLE_TREE_SELECTION );
xTree.setShowsRootHandles( true );
xTree.setEditable( false );
jScroll.getViewport().add( xTree );
splitPane = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT,
jScroll, jScrollRt );
splitPane.setOneTouchExpandable(true);
splitPane.setDividerLocation(200);
minimumSize = new Dimension(200, 150);
jScroll.setMinimumSize( minimumSize );
jScrollRt.setMinimumSize( minimumSize );
splitPane.setPreferredSize( new Dimension(400, 300) );
getContentPane().add( splitPane, BorderLayout.CENTER );
現(xiàn)在我們需要修改這個(gè)構(gòu)造程序來處理這個(gè)非
XML文件的情景。刪除當(dāng)前構(gòu)造程序需要的第二個(gè)字符串參數(shù)。這個(gè)構(gòu)造程序現(xiàn)在就是默認(rèn)的構(gòu)造程序。我們將創(chuàng)建一個(gè)新的構(gòu)造程序來接收一個(gè)字符串參數(shù)。它將先調(diào)用默認(rèn)構(gòu)造程序,然后處理這個(gè)參數(shù)。(參見代碼段7
)而且,main()方法必須被修改以便在沒有XML文件的事件中,仍然能創(chuàng)建一個(gè)默認(rèn)的XmlEditor對象。(參見代碼段8)
代碼段7:
public XmlEditor( String title, ArrayList xmlText ) throws
ParserConfigurationException
{
this( title );
textArea.setText( ( String )xmlText.get( 0 ) + \"\\n\" );
for ( int i = 1; i < xmlText.size(); i++ )
textArea.append( ( String )xmlText.get( i ) + \"\\n\" );
xTree.refresh( textArea.getText() );
}
代碼段8:
public static void main( String[] args )
{
String fileName = \"\";
BufferedReader reader;
String line;
ArrayList xmlText = null;
XmlEditor xmlEditor;
try
{
if( args.length > 0 )
{
fileName = args[0];
if ( fileName.substring( fileName.indexOf( \'.\' ) ).equals(
\".xml\" ) )
{
reader = new BufferedReader( new FileReader( fileName ) );
xmlText = new ArrayList();
while ( ( line = reader.readLine() ) != null )
{
xmlText.add( line );
}
reader.close();
xmlEditor = new XmlEditor( \"XmlEditor 1.0\", xmlText );
}
else
{
help();
}
}
else
{
xmlEditor = new XmlEditor( \"XmlEditor 1.0\" );
}
}
catch( FileNotFoundException fnfEx )
{
System.out.println( fileName + \" was not found.\" );
exit();
}
catch( Exception ex )
{
ex.printStackTrace();
exit();
}
}
為了很容易地處理
JTextArea數(shù)據(jù),還需要最后一次必要的修改。一般我們不把這段文本當(dāng)成一個(gè)長的字符串,而是把它當(dāng)成一系列字符串,每行表示一個(gè)包含在數(shù)組列表中的字符串。這需要修改我們的構(gòu)造程序接收的參數(shù),并且修改在先前把這個(gè)數(shù)據(jù)作為一個(gè)字符串傳入的那個(gè)main()方法中的任何調(diào)用。這還需要導(dǎo)入
java.util包 (參見代碼段8 ) 。
測試這個(gè)應(yīng)用程序
最后,我們必須添加一些異常處理到 XTree類中。如果你運(yùn)行這個(gè)應(yīng)用程序并輸入無效的XML數(shù)據(jù)到
JTextArea中,這個(gè)程序就會崩潰。我們當(dāng)然不想這樣的事情發(fā)生。目前,我們把出錯(cuò)信息打印到命令行中。在下一篇文章中,我們將在一個(gè)圖形對話框中顯示出錯(cuò)信息。
如果無效的或格式不好的 XML數(shù)據(jù)被輸入
JTextArea然后按“Refresh”按鈕,然后解析器將拋出一個(gè)錯(cuò)誤,在本例中,parseXML()方法中包含的當(dāng)前異常處理將立即退出。我們想要這個(gè)程序報(bào)告這個(gè)錯(cuò)誤并返回一個(gè)空值來指出這個(gè)解析是不成功的。(見代碼段9)你可能注意到
XTree類中的“buildTree()”和“refresh()”這兩個(gè)方法有一個(gè)條件語句以避免處理空值。這是因?yàn)槿绻鼈冊囍ヌ幚硪粋€(gè)空值它們也會報(bào)告異常。這個(gè)事件鏈保持程序流進(jìn)行并且保持
XTree模型穩(wěn)定。
最后,我們就可以測試這個(gè)應(yīng)用程序,測試過程我在這里就不多說了。
文章錄入:admin 責(zé)任編輯:admin
上一篇文章: 使用Java Swing 創(chuàng)建一個(gè)XML編輯器(一)
下一篇文章: 使用Java Swing 創(chuàng)建一個(gè)XML編輯器(三)
【發(fā)表評論】【加入收藏】【告訴好友】【打印此文】【關(guān)閉窗口】
賽酷網(wǎng)絡(luò)版權(quán)、投稿與免責(zé)申明:
1)凡本網(wǎng)署名文字、圖片和音視頻稿件,版權(quán)均屬賽酷網(wǎng)絡(luò)所有。任何媒體、網(wǎng)站或個(gè)人未經(jīng)本網(wǎng)協(xié)議授權(quán)不得轉(zhuǎn)載、鏈接、轉(zhuǎn)貼或以其他方式復(fù)制發(fā)表。已經(jīng)本網(wǎng)協(xié)議授權(quán)的媒體、網(wǎng)站,在下載使用時(shí)必須注明“稿件來源:賽酷網(wǎng)絡(luò)”,違者本網(wǎng)將依法追究責(zé)任。
2)本網(wǎng)注明“采編自”的文章均為轉(zhuǎn)載稿,本網(wǎng)轉(zhuǎn)載出于傳遞更多信息之目的。如本網(wǎng)轉(zhuǎn)載稿涉及版權(quán)等問題,請作者在兩周內(nèi)速來電或來函與本網(wǎng)聯(lián)系。
最新熱點(diǎn)最新推薦相關(guān)文章
[組圖]Photoshop唯美女孩變
[組圖]色誘:揭秘封面"色"
[組圖]萬網(wǎng)域名管理平臺操
[組圖]Photoshop把生活照“
[組圖]Photoshop打造超酷春
[組圖]Photoshop把照片制作
[組圖]Photoshop實(shí)例提高:
[組圖]用Photoshop為美女照
[組圖]用Photoshop還你照片
[組圖]Photoshop輕松實(shí)現(xiàn)藝
GG優(yōu)化之三——有效的頁面
GG優(yōu)化之二——優(yōu)化通行方
GG優(yōu)化之一——GG搜索引擎
個(gè)人網(wǎng)站贏利模式的選擇
十條面向搜索引擎的網(wǎng)站優(yōu)
兩個(gè)域名共用一個(gè)空間的實(shí)
[組圖]Photoshop濾鏡簡單打
[組圖]用Photoshop還你照片
[組圖]Photoshop輕松實(shí)現(xiàn)藝
使用md5sum創(chuàng)建文件指紋驗(yàn)證
使用NetFlow分析網(wǎng)絡(luò)異常流量
使用NetFlow分析網(wǎng)絡(luò)異常流量
使用NetFlow分析網(wǎng)絡(luò)異常流量
使用NetFlow分析網(wǎng)絡(luò)異常流量
使用NetFlow分析網(wǎng)絡(luò)異常流量
使用NetFlow分析網(wǎng)絡(luò)異常流量
使用NetFlow分析網(wǎng)絡(luò)異常流量
使用虛擬機(jī)測試你的補(bǔ)丁
使用Exchange 2003防御地址欺
網(wǎng)友評論:(只顯示最新10條。評論內(nèi)容只代表網(wǎng)友觀點(diǎn),與本站立場無關(guān)!)
沒有任何評論
聯(lián)系我們 - 關(guān)于我們 - 廣告商務(wù) - 匯款帳號 - 工作機(jī)會 - 網(wǎng)站律師 - 合作伙伴 - 我要發(fā)布
地址:中國·昆明盤龍區(qū)麗水天錦A棟15樓A06 服務(wù)熱線:0871-5610002 573237155693344 94030638
廣告商務(wù):sales#syku.net 客服:service#syku.net 幫助:help#syku.net
投訴:tousu#syku.net
業(yè)務(wù)資質(zhì):中國萬網(wǎng)2006核心合作伙伴;動易網(wǎng)絡(luò)深圳、昆明區(qū)域代理商
賽酷網(wǎng)絡(luò) 版權(quán)所有 備案編號:滇ICP備05000398號
Copyright 2003-2006 賽酷網(wǎng) Syku.Net
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -