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

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

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

    Swing


    天行健 君子以自強不息

    posts - 69, comments - 215, trackbacks - 0, articles - 16
       :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Swing DayDayUP之三:Swing組件層次結構介紹

    Posted on 2009-07-08 22:49 zht 閱讀(2758) 評論(1)  編輯  收藏 所屬分類: Swing
             一直想寫篇關于Swing體系結構的文章,不過一直不敢下手,怕理解的有偏差,最近看了下這方面的資料,記錄下,Swing的整體組織結構如下圖所示。

    Swing程序要呈現出來,肯定要將組件放到JFrame,JDialog,JApplet,JWindow這幾個容器組件中,這些頂層容器組件,有一個共同的結構,如上圖所示,都有一個JRootPane面板來承載著所有要顯示的組件。JRootPane又有以下部分組成:
    1、GlassPane
    2、JLayeredPane
     (1)ContentPane
     (2)JMenuBar
    其中JRootPanel中的RootLayout對以上幾部分進行布局,關于這點可以參考Java的API文檔和java源碼,里面有詳細的說明。
    這里想要說的一點是,JRootPane并不是只能放在這些頂層容器中的,你也可以放在一般的組件,比如JPanel中,這樣Panel就有了層次結構,可以再其不同的層次上放置組件,這個后邊還會再講一下。
            寫這篇文章,并不是為了講Swing的這個架構,主要是想通過講述這個架構,給大家介紹些開發過程中用的技巧。
    GlassPanel這個可能大家都了解了,比如,可以模擬Eclipse中Tab頁簽的拖拽效果,當處理一些比較費時的操作,比如加載數據時,可以用來遮罩面板,一方面可以防止用戶重復操作,另一方面可以用來顯示進度。不過有一點限制就是每個頂層容器中GlassPanel只能有一個(其實像上面提到的,如果一個面板中的組件都有一個JRootPane來承載組件,其實在一個程序中GlassPane也是可以有多個的,通過這個,GlassPanel和JLayeredPane幾乎可以達到相同的效果)。
            JLayeredPane有了深度的概念,一般的Layout在JLayeredPane是不適用的。一個Integer來標示組件在JLayeredPane中的深度,這個值越大,就會顯示在越上面。JLayeredPane還有一個同層的上下關系,這個可以參考API或者源代碼。重要的一點是JLayeredPane默認的Layout是null,所以,放到JLayeredPane上的組件,必須要通過setBounds的形式來設置大小才會顯示出來,否則是看不到的,這點尤其要注意。JLayeredPane的層次結構能實現非常多的特效,我甚至認為,JLayeredPane 是Swing結構中,最精妙的設計之一,通過JLayeredPane我們可以實現文本的驗證提示功能,舉個例子,有一個文本框,用來輸入電話號碼,有時候可能用戶會輸入些字母,甚至是漢字,當用戶切換到下一個面板或者最后提交驗證以后,你可能希望給出一些提示來標明這些輸入非法,這時候,就可以用到JLayeredPane了,你可以將非法輸入的組件,傳遞給一個Panel,這個Panel在非法的組件旁邊繪制一個小圖標,然后讓這個Panel顯示在主界面的上面(后續會把相關代碼發出)。還有另外一個用途就是使用JInternalFrame做控制面板,可以通過JLayeredPane將一個JInternalFrame懸浮到一個面板中,既不會占用程序的空間,又不會像dialog那樣,必須要彈出來才可以。

             附一個通過LayeredPane來顯示加載進度的例子,使用方法很簡單只需要將你的組件通過我的adapter封裝下,然后再放到你的程序中即可MaskAdapter maskPanel = MaskAdapter.getMaskpanel(panel, false);。
    下載

    主站蜘蛛池模板: 最近2019中文字幕免费大全5| a毛片免费在线观看| 国产精品永久免费10000| 久久亚洲私人国产精品vA | 猫咪免费观看人成网站在线| 天堂在线免费观看中文版| 亚洲人成网站免费播放| 国产成人免费a在线视频色戒| 国产精品亚洲а∨无码播放麻豆| 国产大片91精品免费看3| 曰批全过程免费视频免费看| 亚洲真人日本在线| 国产又黄又爽胸又大免费视频 | 亚洲精品人成在线观看| 久久笫一福利免费导航| 亚洲色偷精品一区二区三区| 免费人成无码大片在线观看| 中文字幕不卡免费高清视频| 亚洲AV区无码字幕中文色| 曰批全过程免费视频播放网站| 亚洲制服丝袜第一页| 拔擦拔擦8x华人免费久久| 国产成人无码免费网站| 久久91亚洲精品中文字幕| 无码人妻精品中文字幕免费东京热| 一本色道久久88亚洲精品综合| 国产成人免费A在线视频| 99精品免费视品| 久久精品国产亚洲AV忘忧草18| 四虎影库久免费视频| 久久午夜夜伦鲁鲁片免费无码| 亚洲人成77777在线播放网站不卡 亚洲人成77777在线观看网 | 毛片在线全部免费观看| 亚洲av产在线精品亚洲第一站| 免费成人午夜视频| 日本视频在线观看永久免费| 亚洲永久网址在线观看| 国产亚洲精品自在久久| 狠狠久久永久免费观看| 国产一精品一av一免费爽爽| 亚洲AV男人的天堂在线观看|