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

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

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

    聽(tīng)雨軒

    不論你在什么時(shí)候開(kāi)始,重要的是開(kāi)始之后就不要停止。 不論你在什么時(shí)候結(jié)束,重要的是結(jié)束之后就不要悔恨。

    統(tǒng)計(jì)

    留言簿(3)

    閱讀排行榜

    評(píng)論排行榜

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

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

    設(shè)計(jì)模式: 當(dāng)你解決一個(gè)問(wèn)題時(shí)你不需要從頭做起,取而代之的是,你應(yīng)該參考過(guò)去的經(jīng)驗(yàn),或者向?qū)<易稍円庖?jiàn),設(shè)計(jì)模式是一種方法,該方法以一種結(jié)構(gòu)化的形式提供專家意見(jiàn)。設(shè)計(jì)模式的靈感來(lái)自于建筑學(xué)設(shè)計(jì)模式。設(shè)計(jì)模式已經(jīng)成為文化的一部分,當(dāng)你談?wù)?/span> MVC 觀察者模式時(shí) 全世界的程序員都明白你的意思,因而,模式已經(jīng)成為討論設(shè)計(jì)問(wèn)題的有效方法。 Swing 采用了 mvc 模式, awt 事件模型采用了 觀察者 模式

    MVC -【模型-視圖-控制器】模式: 該模式同其他許多設(shè)計(jì)模式一樣,都遵循面向?qū)ο蟮脑O(shè)計(jì)中的一個(gè)基本原則:不讓對(duì)象具有太多的功能,如對(duì)于按鈕來(lái)說(shuō)不要讓一個(gè)按鈕類完成所有的事情,替代的方法就是讓一個(gè)對(duì)象負(fù)責(zé)組件的觀感,而另一個(gè)對(duì)象負(fù)責(zé)存儲(chǔ)內(nèi)容, mvc 模式實(shí)現(xiàn)三個(gè)獨(dú)立的類:

    模型-存儲(chǔ)內(nèi)容; ? 視圖-顯示內(nèi)容; ? 控制器-處理用戶輸入

    mvc 模式明確規(guī)定了三個(gè)對(duì)象如何進(jìn)行交互。模型存儲(chǔ)內(nèi)容,它沒(méi)有任何用戶界面。對(duì)于一個(gè)按鈕來(lái)說(shuō),內(nèi)容非常簡(jiǎn)單,它只是一組標(biāo)志,用來(lái)說(shuō)明按鈕是否按下,是否啟用等。對(duì)于一個(gè)文本框來(lái)說(shuō)內(nèi)容稍稍復(fù)雜,它是容納當(dāng)前文本的一個(gè)字符串對(duì)象。這個(gè)內(nèi)容和視圖的內(nèi)容并不一致--如果內(nèi)容長(zhǎng)度大于文本框的顯示長(zhǎng)度,那么用戶只能看到的就是只有文本框顯示的那一部分。

    mvc 模式總結(jié):模型存儲(chǔ)完整內(nèi)容,視圖給出了內(nèi)容的可視化表示【完整或者不完整】,控制器負(fù)責(zé)處理用戶輸入事件,如鼠標(biāo)點(diǎn)擊和鍵盤(pán)事件等,然后它決定是否把這些事件轉(zhuǎn)化成對(duì)模型或視圖的改變。控制器作用舉例:如果用戶在一個(gè)文本框中按下了一個(gè)字符鍵,那么控制器就會(huì)調(diào)用模型中的 插入字符 命令,然后模型告訴視圖進(jìn)行更新,而視圖永遠(yuǎn)不會(huì)知道文本為什么改變了,但是如果用戶按下了一個(gè)光標(biāo)鍵,那么控制器會(huì)通知視圖進(jìn)行卷屏滾動(dòng)。卷動(dòng)視圖對(duì)實(shí)際文本不會(huì)有任何的影響,因此模型永遠(yuǎn)不會(huì)知道該事件的發(fā)生。 Mvc 模式的一個(gè)優(yōu)點(diǎn)是 : 一個(gè)模型可以有多個(gè)視圖,其中每個(gè)視圖可以顯示完整內(nèi)容的不同部分或不同方面。如果作為程序員來(lái)使用 Swing ,則不需要考慮 mvc 的體系結(jié)構(gòu),每個(gè)用戶界面元素都有一個(gè)包裝類(如 Jbutton JTextField ),來(lái)保存模型和視圖。

    JFrame JFrame Frame 的功能相當(dāng),但遠(yuǎn)比 Frame 復(fù)雜。 JFrame 的結(jié)構(gòu)相當(dāng)復(fù)雜,在 JFrame 中安排了四個(gè)窗格,其中根窗格( JRoot )、布局窗格( JLayeredPane )和透明窗格( Glass pane )和我們沒(méi)有什么關(guān)系;他們用來(lái)組織菜單條和內(nèi)容窗格,以及實(shí)現(xiàn)觀感的。 Swing 程序員最關(guān)心的是內(nèi)容窗格( content pane ),當(dāng)設(shè)計(jì)一個(gè)框架時(shí),組件會(huì)被添加到內(nèi)容窗格中,如下代碼所示:

    Container cp=f.getContentPane();

    Component c=…

    cp.add(c);

    很明顯上面的代碼和我們?cè)谇懊鎸W(xué)的 AWT 的編程方式不一樣,不能直接用 add 方法添加組件到 JFrame 上。 JFrame ContentPane 的默認(rèn)布局管理器為 BorderLayout

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

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

    ?????? JMenu有兩個(gè)用途,顯示在JMenuBar下時(shí),它以文本字符串的形式顯示;用戶單擊字符串時(shí)它以彈出式菜單形式顯示。可包括標(biāo)準(zhǔn)菜單項(xiàng),如JMenuItemJCheckBoxMenuItemJRadioButtonMenuItemJeeparator等。JMenu需要兩個(gè)附件類來(lái)輔助其工作。它們是JPopupMenu類和LookAndFeel類。JMenu類將創(chuàng)建JPopupMenu類,并從當(dāng)前可插入的觀感中獲得自己的觀感,用戶單擊JMenuLookAndFeel類負(fù)責(zé)繪制菜單欄中的菜單以及對(duì)在其中發(fā)生的所有事情作出響應(yīng)。

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

    主站蜘蛛池模板: 97免费人妻无码视频| 久久久无码精品亚洲日韩蜜臀浪潮 | a级毛片在线免费| 午夜亚洲国产理论片二级港台二级| 成年女人色毛片免费看| 欧洲亚洲国产精华液| 亚洲国产精品美女| 国产午夜影视大全免费观看| 国产亚洲综合视频| 亚洲大尺度无码无码专区| 免费少妇a级毛片| 日韩在线免费看网站| 伊人久久大香线蕉免费视频| 最好2018中文免费视频| 亚洲熟妇AV日韩熟妇在线| 亚洲人成人77777在线播放| 67pao强力打造67194在线午夜亚洲| 亚洲一区二区三区在线观看精品中文 | 在线观看免费人成视频色9| 91制片厂制作传媒免费版樱花| 中文字幕无码毛片免费看| xxxxx做受大片在线观看免费| 国产成人亚洲精品电影| 色欲色欲天天天www亚洲伊| 亚洲欧美国产精品专区久久| 久久亚洲精品国产亚洲老地址| 亚洲AV日韩精品一区二区三区| 午夜免费啪视频在线观看| 久久国产精品免费视频| 特级无码毛片免费视频尤物| 国产猛男猛女超爽免费视频| a级毛片免费全部播放| 华人在线精品免费观看| 免费国产成人午夜在线观看| 日本免费在线中文字幕| 免费国产黄网站在线观看可以下载| 久久青草免费91线频观看不卡| 四虎影视在线影院在线观看免费视频| 久久午夜无码免费| 131美女爱做免费毛片| 免费精品国产日韩热久久|