隨筆 - 303  文章 - 883  trackbacks - 0
          <2007年3月>
          25262728123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          歡迎光臨! 
          閑聊 QQ:1074961813

          隨筆分類(357)

          我管理的群

          公共blog

          • n維空間
          • Email : java3d@126.com 群 : 12999758

          參與管理的論壇

          好友的blog

          我的其他blog

          朋友的網站

          搜索

          •  

          最新評論

          本人因為做一個SWING計算器的緣故開始接觸SWING,在這里本人不會去研究Swing是否之類無聊話題,

          希望大家能和我一起以一種熱情,自信,不怕失敗的態度學習SWING的使用,謝謝!

          內容及代碼來自:http://www.mycnknow.com? 本人只是負責錯誤代碼改動和代碼解說

          簡介

          1-1:Swing常用的package
          ??????????? PACHAGE???????????????????????? |???????????????????? 內????????? 容
          ????????? -----------------|-------------------------------
          ?????????? javax.swing????????????????????????? |???????? 最常用的pachage,包含了各種swing組件的類
          ?????????? javax.swing.border?????????????? |???????? 包含與swing組件外框有關的類
          ?????????? javax..swing.colorchooser????|???????? 針對swing調色盤組件(JColorChooser)所設計的類
          ?????????? javax.swing.event???????????????? |???????? 處理由swing組件產生的事件,有別于AWT事件
          ?????????? javax.swing.filechooser?????????|???????? 包含針對swing文件選擇對話框(JFileChooser)所設計的類
          ????????? ----------------------------------------------
          ?????????? javax.swing.plaf??????????????????? |???????? 處理swing組件外觀的相關類
          ?????????? javax.swing.plaf.basic?????????? |????????
          ??????????? javax.swing.plaf.metal???????????|????????
          ?????????? ?javax.swing.plaf.multi??????????? |?
          ?????????? ----------------------------------------------??????
          ?????????? javax.swing.table????????????????? |???????? 針對swing表格組件(JTable)所設計的類
          ?????????? ----------------------------------------------
          ?????????? javax.swing.text??????????????????? |???????? 包含與swing文字組件相關的類
          ?????????? javax.swing.text.html???????????? |
          ??????????? javax.swing.text.html.parser?? |
          ??????????? javax.swing.text.rtf????????????????|
          ?????????? ----------------------------------------------
          ?????????? javax.swing.tree???????????????????|???????? 針對swing樹關元件(JTree)所設計的類
          ?????????? javax.swing.undo???????????????? |???????? 提供swing文字組件Redo或Undo的功能
          1-2:swing的版面結構
          ?? Swing中幾乎所有組件都是從JComponent衍生而來,也就是說這些組件都是lightweight Component,均由純java code所編寫面成
          、Swing中以下幾個組件不是由JComponent繼承面來:
          ??? JFrame(JRoot Pane)
          ??? JDialog(JRoot Pane)
          ??? JWindow(JRoot Pane)
          ??? JApplet(JRoot Pane)
          ? 以上四個組件是heavyweight Component,必須使用到native code來畫出這四個窗口組件,因為要在操作系統中顯示窗口畫面,必
          須使用操作系統的窗口資源,而以往的AWT組件大多使用native code所構造出來,因此Swing中的JFrame便繼承原有AWT中的Frame
          類,面不是繼承JComponent類。同樣,JApplet是繼承原有AWT中的JApplet類,也不是繼承JComponent類。
          ??? JFrame、JDialog、JWindow及JApplet這四個組件統稱為最上層組件,因為其余的swing組件都必須依附在此四組件之一上才能
          顯示出來。此四組件均實現(Implement)RootPaneContainer這個界面(Interface),此界面定義了各種容器取得與設置并不是真實的容器,它是由Glass Pane
          與Layered Pane所組成(Layered Pane里擁有Content Pane與Menu Bar,而Menu Bar可選擇使用或不使用),
          我們不能在JRootPane上加入任何的組件,因為它只是一個虛擬的容器,若要在最上層組件上加入組件,必須加在Layered Pane或是
          Layered Pane里的Content Pane上。以JFrame為例,一般我們要在JFrame上加入其他組件(如JButton、JLabel等)必須先取得JFrame
          的Content Pane,然后將要加入的組件放在此Content Pane中,而不是直接就加到JFrame上。因此若要在JFrame中加入一個按鈕,不
          能像以前AWT時一樣寫成frame.add(button)的形式,而必須先取得JFrame的Content Pane,然后將按鈕加入Content Pane中,如:
          ?? frame.getContentPane().add(button)
          否則在編譯的時候將有錯誤信息產生。
          &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
          注意:
          1.組件必須加在容器中,而容器本身具有層次性的關系,就如同珠寶盒一般,大盒子里面可以放小盒子,小盒子里面還可以放更小的盒子,而珠寶就可以放
          在某一個盒子中,這里的珠寶就代表組件,盒子就代表容器。因此若您想在JFrame加入任何組件時,必須
          先取得JFrame的容器來放置這些組件,而由于JFrame、JDialog、JWindow與JApplet是顯示Swing組件的源頭,我們可以稱它們為根
          組件,也就是所謂的最上層組件。
          2.RootPaneContainer它是一個interface,共有5個類實現(Implement)它,分別是JFrame、JAppleet、JWindow、JDialog、
          JInternalFrame,其中JInternalFrame是一個lightweight Component,它不是一個最上層組件,也就是說JInternalFrame不能單獨顯示出來,必須依附在最上
          層組件中,我們將在下面討論組件,而JFrame,JApplet,JWindow,JDialog均為最上層組件。
          &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
          RootPaneContainer定義了下面幾種方法:
          ??? 方法
          ? Container?????? getContentPane()返回contentPane
          ? Component?????? getGlassPane()返回glassPane
          ? JLayeredPane??? getLayeredPane()返回layeredPane
          ? JRootPane?????? getRootPane返回屬于這個組件的JRootPane
          ? Void??????????? setContentPane(Container contentpane)設置ContentPane
          ? Void??????????? setGlassPane(Component glassPane)設置GlassPane
          ? Void??????????? setLayeredPane(JLayeredPane layeredPane)設置LayeredPane
          JFrame如何取得Content Pane的實際流程,下面是一段很簡單的程序代碼:
          ? public class Simple{
          ??? Simple(){
          ?????? JFrame frame=new JFrame();
          ?????? Container contentPane=frame.getContentPane();
          ?????? JButton button=new JButton();
          ?????? contentPane.add(button);
          ??? }
          ? }
          當我們寫frame.getContentPane()時,會返回此frame的Content Pane,也就是一個容器組件,有了容器之后我們才能將button組件
          擺進去,此時JFrame才算擁有button組件。所以JFrame就好像是一塊空地,要在這空地上信人應該先蓋一棟房子(容器),然后人
          、家具、設備等等(組件)就能搬進此房子中。下面的層次結構說明了最上層組件都含有JRootPane組件,JRootPane本身就含有容
          器組件,可讓最上層組件裝入其他的組件。

          ????? |Frame------JFrame(JRoot Pane)
          ????? |
          Window|Dialog-----JDialog(JRoot Pane)
          ????? |
          ????? |
          ????? |-----------JWindow(JRoot Pane)

          Applet -----------JApplet(JRoot Pane)

          圖示:
          ???????? |Grass Pane
          ???????? |
          Root Pane|
          ???????? |??????????? |Content Pane
          ???????? |Layered Pane|
          ????????????????????? |Menu Bar
          ?



          地震讓大伙知道:居安思危,才是生存之道。
          posted on 2007-03-02 23:19 小尋 閱讀(375) 評論(0)  編輯  收藏 所屬分類: j2se/j2ee/j2me
          主站蜘蛛池模板: 泗阳县| 宣武区| 电白县| 望谟县| 九龙县| 正蓝旗| 霸州市| 金塔县| 文成县| 红安县| 阿鲁科尔沁旗| 池州市| 神农架林区| 乌拉特中旗| 临高县| 萨嘎县| 城市| 阿瓦提县| 乌兰浩特市| 博白县| 淳安县| 伽师县| 孟连| 黑水县| 大余县| 灯塔市| 呈贡县| 罗江县| 东辽县| 武宣县| 太谷县| 盐边县| 读书| 瑞昌市| 汉川市| 平邑县| 汉中市| 古浪县| 台南县| 石柱| 滦平县|