摘要:該文利用Java與XML技術,實現了基于Java Synth生成xml的定制工具;通過設置組件的屬性來定制組件風格,生成相應的XML文件;解決了開發人員利用Java Synth進行外觀設計時,在XML文件中描述數量繁多的組件屬性難題;節省了Java程序員編寫應用程序完整界面外觀的工作量,降低了軟件的開發成本。
關鍵詞:Java Synth;XML;風格定制
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)34-2034-02
Rescarch and Implementation of Creating XML Base on Java Synth
ZHONG Juan
(School of Electronics and Information Engineering, Anhui University of Architecture, Hefei 230601, China)
Abstract: This paper uses Java and XML technology, implements customization toolkit of Creating XML Base on Java Synth; The key is to visually customize component LF through setting component properties and creates corresponding XML file; Solved the troublesome problem When a programmer utilizes Java Synth to design Look-and-Feel (LF), he needs describe lots of component properties; this already will save the Java programmer to compile an application procedure complete contact UI (User Interface) appearance of the work load, lower software's development cost.
Key words: Java Synth; XML; LF customization
1 引言
隨著軟件行業的發展,用戶對圖形界面質量的呼聲越來越高,從而使軟件工程師在界面風格上花費的精力越來越多。系統的開發周期越來越長、開發成本越來越高。Sun公司推出的J2SE5.0版本引入了Swing Synth,一種新的Look And Feel“皮膚”外觀切換技術,使Java在用戶界面(UI)領域邁上一個新臺階。然而,開發人員利用Synth進行外觀設計時,需要在XML文件中描述數量繁多的組件屬性和遵循Synth DTD格式,這對程序員來說比較繁瑣。鑒于此,本文研究并實現了基于Java Synth生成xml的定制工具。Java程序員可把定制的組件外觀直接應用到Java文件中,不需要修改任何Java源代碼,使Java程序的界面面貌煥然一新。從而節省了Java程序員的工作量,降低了軟件的開發成本,提高了軟件的開發效率,推進了軟件行業的發展。
2 Java Synth
Synth是一個全新的,完整的外觀,利用Synth是要修改XML文件,通過裝入不同的XML文件,就可有一個全新的外觀。Synth是J2SE5.0里新引入的Swing內容。Synth是用戶自定義的界面工具,是Sun提供的一種新的Look And Feel,是通過配置文件進行定義的,插入式的Look And Feel。規定了內置謂詞近100個,包含字符處理、表處理、輸入輸出、數據庫處理、異常處理等幾個方面。Synth的DTD即Synth XML文件的主要構件,用它來設置不同的組件外觀保存為相應的Synth XML文件即.xml,然后再通過Java文件按一定的格式載入它,就可顯示用戶所要的組件風格了。
3 XML技術與Java相結合的應用
XML的出現為Java帶來了一個機遇,XML是對Java的完善。同時Java為XML提供了易于使用的代碼,XML為Java提供了數據。Java和XML可以很好的結合,Java和XML的應用主要表現在:面向消息的計算(比如遠程過程調用XML.RPC,SOAP協議,電子化業務XML(ebXML))、用戶界面相關的用來表示相關的上下文(如可擴展樣式表語言XSL、可擴展樣式表語言轉換XSLT)、以及數據的表示和交換等多方面。本文主要應用了Java與XML結合的用于數據表示和交換方面。
4 生成xml的工具模型
用戶可根據自己的要求設置不同組件的各個屬性,若滿意則保存,系統會自動生成相應組件風格的XML文件。由于不同組件有不同的屬性,同種組件在不同狀態下,對應的組件屬性也不一定相同,并且對于不同的狀態對應著不同的組件屬性,要實現組件的功能屬性,必然需要它具有一定的特點,那么用一個共同的“容器”把對應的組件的屬性組裝起來,本系統把此“容器”稱為屬性編輯器模型。通過此模型,用戶可以在組件某種特殊的狀態下,對一個選定的組件進行有關屬性的設計;本編輯器模型即具有表格性質又具有樹型結構。
5 生成xml的工具關鍵實現
要實現上述的功能,自然要求屬性編輯器具有調用其它功能模塊的接口。編輯器擁有的組件屬性Background、Foreground、Opaque、Text Background、Text Foreground、Font Style 、Insets、Image Location、Source Insets、Destionation Insets、Stretch、Paint Center、Icon等。當用戶定制好組件風格屬性后,點擊保存按鈕,系統會自動調用writeXMLFile (String outFile)方法,生成用戶定制的組件風格的.xml文件。本系統用封裝在org.w3c.dom包中的類作為DOM的實現,用Javax.xml.parsers.*作為XML的解析器接口;用第三方提供的軟件包——org.apache.crimson.tree.XmlDocument,寫XML文件。那么,方法writeXMLFile (String outFile)的部分實現代碼為:
protected void writeXMLFile(String outFile) throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = 1;
try { db = dbf.newDocumentBuilder();
}
catch (ParserConfigurationException pce) {
System.err.println(pce);
System.exit(1);
}
Document doc = 1;
doc = db.newDocument();
Element root = doc.createElement(\"synth\");
doc.appendChild(root);
Element style = doc.createElement(\"style\");
style.setAttribute(\"id\",propertyEditor.getComponentName());
root.appendChild(style);
Element opaque = doc.createElement(\"opaque\");
opaque.setAttribute(\"value\",String.valueOf(propertyEditor.isOpaque()));
style.appendChild(opaque);
Element state = doc.createElement(\"state\");
state.setAttribute(\"value\",propertyEditor.getMouseState(selectedIndex));
style.appendChild(state);
…………………………..
FileOutputStream outStream = new FileOutputStream(outFile);
OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
( (XmlDocument) doc).write(outWriter, \"GB2312\");
outWriter.close();
outStream.close();
}
在上面的代碼中,有類似propertyEditor.getComponentName()這樣的語句,在本系統中propertyEditor是實現保存當前用戶定制組件風格屬性的一個類EditorProperty的一個對象,而getComponentName()是在屬性編輯類EditorProperty中的一個方法。本系統就是用這個屬性編輯類的一個對象來引用此類不同屬性對應的方法,把當前用戶定制的組件屬性風格值取出而得到的。整個編輯器實現的界面如圖1所示,生成對應的某個xml文件如圖2所示。
■
圖1 屬性編輯器界面圖圖2 xml文件圖
6 結論
本文通過對Java Synth以及XML技術的研究和分析,提出了一種生成xml的工具模型,實現了一個基于Java Synth生成xml的工具系統。實踐表明用戶通過本系統進行定制組件外觀,能夠大大縮短軟件系統的開發周期,提高軟件開發質量,降低開發成本,使應用程序外觀的個性化過程變的更加容易,使軟件行業發展更加迅速。
參考文獻:
[1] 方美琪.XML及其在電子商務中的應用[M].北京:清華大學出版社,2003.
[2] Abernethy M.Advancee Synth[EB/OL].(2005-02-10).http://www-128.ibm.com/developerworks/Java/library/j-synth/?STAC-T=105AGX52S_CMP=cn-a-j.
[3] Sun Microsystems,Inc.JDKTM 5.0 Documentation[EB/OL].http://Java.sun.com/j2se/1.5.0/docs/index.html.
[4] 張洪斌.成功通過Sun認證Java2程序員考試[M].北京:北京科海集團公司,2006.
[5] 陳張.基于Java技術的工作流管理系統的研究與開發[D].上海:同濟大學,2006.
[6] 陳偉波.Java實例[EB/OL].http://www.Java3z.com/cwbwebhome/Javacode.jsp.
[7] 薩密.電子商務實現采用Java技術和基于XML技術[D].上海:同濟大學,2006.