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

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

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

    聽雨軒

    不論你在什么時候開始,重要的是開始之后就不要停止。 不論你在什么時候結束,重要的是結束之后就不要悔恨。

    統計

    留言簿(3)

    閱讀排行榜

    評論排行榜

    Java圖形用戶界面---Swing的介紹

    圖形用戶接口( GUI )庫最初的設計目的是讓程序員構建一個通用的 GUI ,使其在所有的平臺上都能夠正常的顯示。但是比較遺憾的是 AWT 產生的是在各系統看來都同樣欠佳的圖形用戶接口, JAVA1.2 為老的 java1.0 AWT 添加了 java 基礎類( JFC ),這是一個被稱為 “Swing” GUI 的一部分。 Swing 是第二代 GUI 開發工具集, AWT 采用了與特定平臺相關的實現,而絕大部分 Swing 組件卻不是。 Swing 是構筑在 AWT 上層的一組 GUI 組件的集合,為了保證可移植性,它完全用 Java 語言編寫,與 AWT 相比, Swing 提供了更完整的組件,引入了許多新的特性和能力。 Swing 提供了更多的組件庫,如: JTable , JTree , Jcombox 。 Swing 也增強了 AWT 中組件的功能。正是因為 Swing 具備了如此多的優勢所以我們以后在開發中都使用 Swing 。 JComponent 類是 Swing 組件的基類,而 JComponent 繼承自 Container 類,因此,所有的 Swing 組件都是 AWT 的容器。 Swing 采用了 MVC 設計模式。

    設計模式: 當你解決一個問題時你不需要從頭做起,取而代之的是,你應該參考過去的經驗,或者向專家咨詢意見,設計模式是一種方法,該方法以一種結構化的形式提供專家意見。設計模式的靈感來自于建筑學設計模式。設計模式已經成為文化的一部分,當你談論 MVC 觀察者模式時 全世界的程序員都明白你的意思,因而,模式已經成為討論設計問題的有效方法。 Swing 采用了 mvc 模式, awt 事件模型采用了 觀察者 模式

    MVC -【模型-視圖-控制器】模式: 該模式同其他許多設計模式一樣,都遵循面向對象的設計中的一個基本原則:不讓對象具有太多的功能,如對于按鈕來說不要讓一個按鈕類完成所有的事情,替代的方法就是讓一個對象負責組件的觀感,而另一個對象負責存儲內容, mvc 模式實現三個獨立的類:

    模型-存儲內容; ? 視圖-顯示內容; ? 控制器-處理用戶輸入

    mvc 模式明確規定了三個對象如何進行交互。模型存儲內容,它沒有任何用戶界面。對于一個按鈕來說,內容非常簡單,它只是一組標志,用來說明按鈕是否按下,是否啟用等。對于一個文本框來說內容稍稍復雜,它是容納當前文本的一個字符串對象。這個內容和視圖的內容并不一致--如果內容長度大于文本框的顯示長度,那么用戶只能看到的就是只有文本框顯示的那一部分。

    mvc 模式總結:模型存儲完整內容,視圖給出了內容的可視化表示【完整或者不完整】,控制器負責處理用戶輸入事件,如鼠標點擊和鍵盤事件等,然后它決定是否把這些事件轉化成對模型或視圖的改變??刂破髯饔门e例:如果用戶在一個文本框中按下了一個字符鍵,那么控制器就會調用模型中的 插入字符 命令,然后模型告訴視圖進行更新,而視圖永遠不會知道文本為什么改變了,但是如果用戶按下了一個光標鍵,那么控制器會通知視圖進行卷屏滾動。卷動視圖對實際文本不會有任何的影響,因此模型永遠不會知道該事件的發生。 Mvc 模式的一個優點是 : 一個模型可以有多個視圖,其中每個視圖可以顯示完整內容的不同部分或不同方面。如果作為程序員來使用 Swing ,則不需要考慮 mvc 的體系結構,每個用戶界面元素都有一個包裝類(如 Jbutton JTextField ),來保存模型和視圖。

    JFrame JFrame Frame 的功能相當,但遠比 Frame 復雜。 JFrame 的結構相當復雜,在 JFrame 中安排了四個窗格,其中根窗格( JRoot )、布局窗格( JLayeredPane )和透明窗格( Glass pane )和我們沒有什么關系;他們用來組織菜單條和內容窗格,以及實現觀感的。 Swing 程序員最關心的是內容窗格( content pane ),當設計一個框架時,組件會被添加到內容窗格中,如下代碼所示:

    Container cp=f.getContentPane();

    Component c=…

    cp.add(c);

    很明顯上面的代碼和我們在前面學的 AWT 的編程方式不一樣,不能直接用 add 方法添加組件到 JFrame 上。 JFrame ContentPane 的默認布局管理器為 BorderLayout 。

    JPanel 組件為中間容器,用于將較小的輕量級組件組合在一起,這意味著它與內容窗格相似。 JPanel 默認為 FlowLayout 布局。

    JMenuBar 只能通過 JFrame 、 JWindow JInternalFrame 的根窗格來添加。 JMenuBar 不能直接添加到窗體中。它由多個 Jmenu 組成,每個 JMenu JMenuBar 中都表示為字符串。 JMenuBar 需要兩個附件類來輔助其工作。它們是 SingleSelectionModel 類和 LookAndFeel 類。 SingleSelectionModel 類跟蹤當前選定的菜單, LookAndFeel 類負責繪制菜單欄以及在其中發生的事件作出響應。

    ?????? JMenu有兩個用途,顯示在JMenuBar下時,它以文本字符串的形式顯示;用戶單擊字符串時它以彈出式菜單形式顯示??砂藴什藛雾?,如JMenuItem、JCheckBoxMenuItemJRadioButtonMenuItemJeeparator等。JMenu需要兩個附件類來輔助其工作。它們是JPopupMenu類和LookAndFeel類。JMenu類將創建JPopupMenu類,并從當前可插入的觀感中獲得自己的觀感,用戶單擊JMenu,LookAndFeel類負責繪制菜單欄中的菜單以及對在其中發生的所有事情作出響應。

    posted on 2006-11-13 18:38 Winnie 閱讀(2302) 評論(0)  編輯  收藏 所屬分類: java基礎知識

    主站蜘蛛池模板: 久久精品无码专区免费| 久视频精品免费观看99| 国产精品免费看久久久久| 亚洲a级片在线观看| 亚洲精品视频在线观看免费| 亚洲AV第一页国产精品| 亚洲冬月枫中文字幕在线看| 成年免费大片黄在线观看com| 毛片免费在线观看网站| 亚洲精品无码AV人在线播放 | 免费三级毛片电影片| 国产精品另类激情久久久免费| 在线观看亚洲AV日韩A∨| 四虎成人免费网址在线| 亚洲国产AV无码专区亚洲AV| 亚洲av无码有乱码在线观看| 韩国18福利视频免费观看| 人人狠狠综合久久亚洲| 免费又黄又爽又猛的毛片| 一级毛片人与动免费观看| 亚洲精品无码国产| 无码一区二区三区免费| 亚洲国产精品一区二区九九| 国产免费人成视频在线播放播| 亚洲va中文字幕无码久久 | 久久成人18免费网站| 亚洲国产精品乱码一区二区 | 免费观看又污又黄在线观看| 精品女同一区二区三区免费站| 亚洲伊人久久大香线蕉综合图片| a级午夜毛片免费一区二区| 国产在线19禁免费观看国产 | 青青视频观看免费99| 风间由美在线亚洲一区| 亚洲日本va中文字幕久久| 18禁美女裸体免费网站 | 老司机精品免费视频| 日本大片在线看黄a∨免费| 亚洲乱码在线视频| 亚洲v国产v天堂a无码久久| 一级毛片aaaaaa免费看|