<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 167,  comments - 30,  trackbacks - 0
    相信大家對XML都不陌生,含義是可擴展標記語言。本身它也就是一個數據的載體以樹狀表現形式出現。后來慢慢的數據變成了信息,區別是信息可以包括可變的狀態從而針對程序硬編碼的做法變革為針對統一接口硬編碼而可變狀態作為信息進入了XML中存儲。這樣改變狀態實現擴展的唯一工作是在XML中添加一段文本信息就可以了,代碼不需要改動也不需要重新編譯。這個靈活性是XML誕生時候誰也沒想到的。

    當然,如果接口要能提取XML中配置的信息就需要程序能解析規范的XML文件,Java中當然要提高包對這個行為進行有利支持。筆者打算講到的兩個包是 org.w3c.dom和javax.xml.parsers和。(大家可以瀏覽一下這些包中間的接口和類定義)

    Javax.xml.parsers包很簡單,沒有接口,兩個工廠配兩個解析器。顯然解析XML是有兩種方式的:DOM解析和SAX解析。本質上并沒有誰好誰不好,只是實現的思想不一樣罷了。給一個XML文件的例子:
    <?xml version=”1.0” encoding=”UTF-8” >
    <root >
    <child name=”Kitty” >
    A Cat
    </child >
    </root >

    所謂DOM解析的思路是把整個樹狀圖存入內存中,需要那個節點只需要在樹上搜索就可以讀到節點的屬性,內容等,這樣的好處是所有節點皆在內存可以反復搜索重復使用,缺點是需要消耗相應的內存空間。

    自然SAX解析的思路就是為了克服DOM的缺點,以事件觸發為基本思路,順序的搜索下來,碰到了Element之前觸發什么事件,碰到之后做什么動作。由于需要自己來寫觸發事件的處理方案,所以需要借助另外一個自定義的Handler,處于org.xml.sax.helpers包中。它的優點當然是不用整個包都讀入內存,缺點也是只能順序搜索,走完一遍就得重來。

    大家很容易就能猜到,接觸到的J2ee框架用的是哪一種,顯然是DOM。因為類似Struts,Hibernate框架配置文件畢竟是很小的一部分配置信息,而且需要頻繁搜索來讀取,當然會采用DOM方式(其實SAX內部也是用DOM采用的結構來存儲節點信息的)。現在無論用什么框架,還真難發現使用 SAX來解析XML的技術了,如果哪位仁兄知道,請讓筆者也學習學習。

    既然解析方式有了,那么就需要有解析的存儲位置。不知道大家是否發現org.w3c.dom這個包是沒有實現類全部都是接口的。這里筆者想說一下Java 如何對XML解析是Jdk應該考慮的事,是它的責任。而w3c組織是維護定義XML標準的組織,所以一個XML結構是怎么樣的由w3c說了算,它不關心 Java如何去實現,于是乎規定了所有XML存儲的結構應該遵循的規則,這就是org.w3c.dom里全部的接口目的所在。在筆者看來,簡單理解接口的概念就是實現者必須遵守的原則。

    整個XML對應的結構叫Document、子元素對應的叫做Element、還有節點相關的Node、NodeList、Text、Entity、 CharacterData、CDATASection等接口,它們都可以在XML的語法中間找到相對應的含義。由于這里不是講解XML基本語法,就不多介紹了。如果大家感興趣,筆者也可以專門寫一篇關于XML的語法規則帖與大家分享一下。

    2. Java Swing
    Swing是一個讓人又愛又恨的東西,可愛之處在于上手很容易,較AWT比起來Swing提供的界面功能更加強大,可恨之處在于編復雜的界面工作量實在是巨大。筆者寫過超過3000行的Swing界面,感覺用戶體驗還不是那么優秀。最近又寫過超過6000行的,由于功能模塊多了,整體效果還只是一般般。體會最深的就一個字:累! 所以大家現在都陸續不怎么用Swing在真正開發的項目上了,太多界面技術可以取代它了。筆者去寫也是迫于無奈組里面大家都沒寫過,我不入地域誰入?

    盡管Swing慢慢的在被人忽略,特別是隨著B/S慢慢的在淹沒C/S,筆者倒是很愿意站出來為Swing正身。每一項技術的掌握絕不是為了流行時尚跟風。真正喜歡Java的朋友們還是應該好好體會一下Swing,相信在校的很多學生也很多在學習它。很可能從Jdk 1.1、1.2走過來的很多大學老師可能是最不熟悉它的。
    Swing提供了一組輕組件統稱為JComponent,它們與AWT組件的最大區別是JComponent全部都是Container,而 Container的特點是里面可以裝載別的組件。在Swing組件中無論是JButton、JLabel、JPanel、JList等都可以再裝入任何其他組件。好處是程序員可以對Swing組件實現“再開發”,針對特定需求構建自己的按鈕、標簽、畫板、列表之類的特定組件。

    有輕自然就有重,那么輕組件和重組件區別是?重組件表現出來的形態因操作系統不同而異,輕組件是Swing自己提供GUI,在跨平臺的時候最大程度的保持一致。
    那么在編程的時候要注意一些什么呢?筆者談談自己的幾點經驗:

    a. 明確一個概念,只有Frame組件才可以單獨顯示的,也許有人會說JOptionPane里面的靜態方法就實現了單獨窗口出現,但追尋源代碼會發現其實現實出來的Dialog也需要依托一個Frame窗體,如果沒有指定就會默認產生一個然后裝載這個Dialog顯示出來。

    b. JFrame是由這么幾部分組成:
    最底下一層JRootPane,上面是glassPane (一個JPanel)和layeredPane (一個JLayeredPane),而layeredPane又由contentPane(一個JPanel)和menuBar構成。我們的組件都是加在 contentPane上,而背景圖片只能加在layeredPane上面。至于glassPane是一個透明的覆蓋了contentPane的一層,在特定效果中將被利用到來記錄鼠標坐標或掩飾組件。

    c. 為了增強用戶體驗,我們會在一些按鈕上添加快捷鍵,但Swing里面通常只能識別鍵盤的Alt鍵,要加入其他的快捷鍵,必須自己實現一個ActionListener。

    d. 通過setLayout(null)可以使得所有組件以setBounds()的四個參數來精確定位各自的大小、位置,但不推薦使用,因為好的編程風格不應該在Swing代碼中硬編碼具體數字,所有的數字應該以常數的形式統一存在一個靜態無實例資源類文件中。這個靜態無實例類統一負責Swing界面的風格,包括字體和顏色都應該包括進去。

    e. 好的界面設計有一條Golden Rule: 用戶不用任何手冊通過少數嘗試就能學會使用軟件。所以盡量把按鈕以菜單的形式(不管是右鍵菜單還是窗體自帶頂部菜單)呈現給顧客,除非是頻繁點擊的按鈕才有必要直接呈現在界面中。

    其實Swing的功能是相當強大的,只是現在應用不廣泛,專門去研究大概是要花不少時間的。筆者在各網站論壇瀏覽關于Swing的技巧文章還是比較可信的,自己所學非常有限,各人體會對Swing各個組件的掌握就是一個實踐積累的過程。筆者只用到過以上這些,所以只能談談部分想法,還望大家見諒!
    posted on 2010-08-17 10:15 David1228 閱讀(228) 評論(0)  編輯  收藏 所屬分類: JAVA

    <2010年8月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章檔案

    新聞分類

    新聞檔案

    相冊

    收藏夾

    Java

    Linux知識相關

    Spring相關

    云計算/Linux/虛擬化技術/

    友情博客

    多線程并發編程

    開源技術

    持久層技術相關

    搜索

    •  

    積分與排名

    • 積分 - 358547
    • 排名 - 154

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费看国产成年无码AV片| a毛片全部播放免费视频完整18| 日本片免费观看一区二区| 亚洲gv猛男gv无码男同短文| 久久九九久精品国产免费直播| 亚洲片国产一区一级在线观看| 成年免费大片黄在线观看com| 免费中文字幕不卡视频| 国产99久久久久久免费看| 久久亚洲国产精品五月天婷| 国产在线观看免费视频软件| 亚洲AV无码精品色午夜在线观看| 午夜精品一区二区三区免费视频| 久久久久亚洲AV无码永不| 4399好看日本在线电影免费| 欧洲 亚洲 国产图片综合| 国产乱色精品成人免费视频| 男女啪啪免费体验区| 人人狠狠综合久久亚洲88| 91精品视频在线免费观看| 亚洲综合色一区二区三区| 免费一级特黄特色大片在线| 插鸡网站在线播放免费观看| 精品亚洲成AV人在线观看| 成人免费无码大片a毛片| 国产国产人免费人成成免视频 | 亚洲免费在线视频| 亚洲色图视频在线观看| 成人免费视频小说| sss在线观看免费高清| 亚洲精品在线观看视频| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 色视频在线观看免费| 久久精品国产亚洲| 国产香蕉九九久久精品免费| 一级A毛片免费观看久久精品| 亚洲高清在线mv| 亚洲A∨精品一区二区三区| 97av免费视频| 老司机午夜精品视频在线观看免费| 亚洲AV无码一区二区三区系列 |