色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開(kāi)發(fā)>基于Java反射機(jī)制及控制反轉(zhuǎn)的GUI框架設(shè)計(jì)方案解析

基于Java反射機(jī)制及控制反轉(zhuǎn)的GUI框架設(shè)計(jì)方案解析

2017-10-25 | rar | 0.6 MB | 次下載 | 1積分

資料介紹

Java是目前最優(yōu)秀的軟件開(kāi)發(fā)語(yǔ)言之一,由于其結(jié)構(gòu)簡(jiǎn)單、面向?qū)ο蟆⒖缙脚_(tái)等優(yōu)越特性使它具有極強(qiáng)的生存力,并得到了廣泛的應(yīng)用。基于Java的圖形用戶界面(GUI)中,AWT是Java提供的用來(lái)建立和設(shè)置Java圖形用戶界面的第一代開(kāi)發(fā)工具。AWT由java.awt包提供,其中包含了許多可以用來(lái)建立與平臺(tái)無(wú)關(guān)的GUI類。由于AWT組件占有系統(tǒng)資源較多,常把java.awt組件稱為重量級(jí)組件。Java Swing是Java Foundation Classes(JFC)的一部分,解決了AWT的很多缺點(diǎn),相對(duì)于AWT,Swing是輕量級(jí)組件。Swing提供了許多比AWT更好的屏幕顯示元素,使用純Java寫成,與Java一樣可以跨平臺(tái)運(yùn)行[1]。
  圖形用戶界面(GUI)借助于多種組件,包括菜單、按鈕、文本框、選擇框、列表框等,通過(guò)相應(yīng)的事件處理機(jī)制,實(shí)現(xiàn)與用戶的動(dòng)態(tài)交互。
  1 圖形用戶界面的建立
  1.1 創(chuàng)建GUI窗口
  javax.swing.JFrame類是用來(lái)建立用戶界面的底層窗口容器,能夠容納其他組件的對(duì)象,如標(biāo)簽、按鈕、文本組件等。JFrame類提供的add()方法把不同的組件添加到容器中,通過(guò)容器類的setLayout()方法可以設(shè)定容器的布局,安排各種組件在容器中。
  使用JFrame類創(chuàng)建GUI窗口的基本步驟如下:用JFrame類或其子類創(chuàng)建一個(gè)對(duì)象即窗體;設(shè)置窗口的部分屬性,如標(biāo)題、寬度、高度、可見(jiàn)性、圖標(biāo)等;添加內(nèi)容面板、組件;編寫事件處理方法;組件添加事件監(jiān)聽(tīng)。
  1.2 Java事件處理
  在Java中,程序與用戶的交互通過(guò)響應(yīng)各種事件來(lái)實(shí)現(xiàn)。每當(dāng)一個(gè)事件發(fā)生,Java虛擬機(jī)就會(huì)將事件的消息傳遞給程序,由程序中的事件處理方法對(duì)事件進(jìn)行處理。Java通過(guò)委托型事件處理機(jī)制來(lái)解決對(duì)事件的響應(yīng)。
  事件處理機(jī)制可表述如下[2]:事件源對(duì)象封裝了事件源、組件狀態(tài)等必要信息;當(dāng)事件源對(duì)象發(fā)生改變時(shí),向它所注冊(cè)的所有監(jiān)聽(tīng)器發(fā)出通知,各監(jiān)聽(tīng)器判斷事件類型是否為自己管轄范圍,若是,則通知給該監(jiān)聽(tīng)器的執(zhí)行器,執(zhí)行器從事件中獲取事件信息,并執(zhí)行相應(yīng)函數(shù),改變組件的狀態(tài)。
  1.3 傳統(tǒng)創(chuàng)建窗口和事件處理的局限性
  在傳統(tǒng)的GUI創(chuàng)建過(guò)程中,存在一些局限性。
  (1)組件創(chuàng)建、添加都采用硬編碼方式,造成程序的過(guò)度耦合
  (2)如果窗體中有很多組件,組件要添加注冊(cè)監(jiān)聽(tīng),則在代碼中看到很多重復(fù)注冊(cè)監(jiān)聽(tīng)的代碼,而這些注冊(cè)監(jiān)聽(tīng)的代碼都與界面本身設(shè)計(jì)無(wú)關(guān),組件與事件之間的映射關(guān)系將會(huì)很混亂。
  (3)事件處理方法定義在別的類中,無(wú)法得到窗體及其組件的引用,只能得到事件源,而無(wú)法改變其他組件的狀態(tài);或者把事件處理與窗體設(shè)計(jì)放在一起,這樣程序的可維護(hù)性又不好。
  (4)不利于代碼重用,基于MVC的思想,應(yīng)該把事件處理方法分離出來(lái);在需要修改事件處理代碼時(shí),就無(wú)需修改界面本身的源代碼。
  2 圖形用戶界面設(shè)計(jì)的改進(jìn)
  2.1 控制反轉(zhuǎn)(IOC)
  IOC就是控制反轉(zhuǎn)[3](Inversion of Control)的縮寫,也稱為依賴注入,控制反轉(zhuǎn)IOC是一種用于控制業(yè)務(wù)對(duì)象之間依賴關(guān)系的機(jī)制,將其設(shè)計(jì)的類與類之間的關(guān)系都交由外部容器進(jìn)行管理,僅需調(diào)用類在容器中注冊(cè)的名字就可以得到類的實(shí)例,有效降低了業(yè)務(wù)對(duì)象之間的依賴程度,實(shí)現(xiàn)了業(yè)務(wù)對(duì)象之間的松散耦合。
  IOC的實(shí)際意義就是把組件之間的依賴關(guān)系(調(diào)用關(guān)系)反轉(zhuǎn)出來(lái),對(duì)象之前的依賴關(guān)系用xml配置文件描述;這樣,各個(gè)組件之間就不存在硬編碼的關(guān)聯(lián),任何組件都可以最大程度地得到重用。
  考慮如下接口和類的定義:
  public interface ICar{void operate();}
  public class Toyota implements ICar{…}
  public class Honda implements ICar{…}
  public class Driver{
  private ICar car;
  public void setCar(ICar car){this.car = car;}
  public ICar getCar(){return car;}
  public void drive(){car.operator();}
  }
  類Driver依賴于ICar,而類Toyota和Honda實(shí)現(xiàn)了接口ICar,即類Driver可以依賴于Toyota或Honda。
  運(yùn)用了IOC模式后就不再需要自己管理組件之間的依賴關(guān)系,只需要聲明由xml配置文件描述去實(shí)現(xiàn)這種依賴關(guān)系,就好像把對(duì)組件之間的依賴關(guān)系的控制進(jìn)行了倒置,不再由組件自己來(lái)建立這種依賴關(guān)系而是交給xml配置文件去管理。
  2.2 設(shè)計(jì)的改進(jìn)
  在改進(jìn)的GUI編程中,把窗體中組件的創(chuàng)建、組件的外觀設(shè)置和組件觸發(fā)事件時(shí)執(zhí)行什么方法,不是以硬編碼的方式組合在一起,而是通過(guò)配置文件來(lái)配置。這樣開(kāi)發(fā)人員無(wú)須關(guān)心組件的創(chuàng)建、組件的樣式設(shè)置、事件的監(jiān)聽(tīng)與實(shí)現(xiàn),只需要設(shè)置相應(yīng)的get、set方法來(lái)存取組件、屬性等,事件處理方法能在任意類中實(shí)現(xiàn),方法名可以自定義,并且在其他類中能夠得到窗體對(duì)象及其組件的引用。當(dāng)組件的樣式發(fā)生改變時(shí),只需改動(dòng)配置文件即可。
  該改進(jìn)設(shè)計(jì)通過(guò)配置文件,并利用控制反轉(zhuǎn)和Java反射機(jī)制得以實(shí)現(xiàn),這就需要有框架和良好的設(shè)計(jì)。
  3 框架運(yùn)行機(jī)理
  框架中各組成部分在運(yùn)行過(guò)程中的調(diào)用關(guān)系如圖1所示。
  基于Java反射機(jī)制及控制反轉(zhuǎn)的GUI框架設(shè)計(jì)方案解析
  當(dāng)程序入口啟動(dòng)時(shí),框架解析bean-config.xml文件;組件工廠類根據(jù)xml配置文件創(chuàng)建各種組件對(duì)象;組件外觀設(shè)置類查找xml文件為每個(gè)組件設(shè)置相應(yīng)的外觀;事件監(jiān)聽(tīng)器類查找xml文件為每個(gè)組件添加對(duì)應(yīng)的事件監(jiān)聽(tīng)器;事件執(zhí)行類查找xml文件為每個(gè)組件設(shè)置事件觸發(fā)時(shí)執(zhí)行的方法;最后還需要一個(gè)保存窗體對(duì)象的類。
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1TC358743XBG評(píng)估板參考手冊(cè)
  2. 1.36 MB  |  330次下載  |  免費(fèi)
  3. 2開(kāi)關(guān)電源基礎(chǔ)知識(shí)
  4. 5.73 MB  |  6次下載  |  免費(fèi)
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計(jì)
  8. 0.60 MB  |  3次下載  |  免費(fèi)
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費(fèi)
  11. 6基于FPGA的C8051F單片機(jī)開(kāi)發(fā)板設(shè)計(jì)
  12. 0.70 MB  |  2次下載  |  免費(fèi)
  13. 751單片機(jī)窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費(fèi)
  15. 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21548次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6653次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191185次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183278次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)
主站蜘蛛池模板: 丰满大屁俄罗斯肥女| 性色欲情网站IWWW九文堂| 麻豆啊传媒app黄版破解免费 | 乱码AV午夜噜噜噜噜| 色噜噜2017最新综合| 找老女人泻火对白自拍| 国产成人精品电影在线观看| 快穿做妓女好爽H| 亚洲AV无码A片在线观看蜜桃 | 亚欧免费观看在线观看更新| 99久久免费视频6| 久久国产精品免费网站| 侮辱丰满美丽的人妻| 扒开粉嫩的小缝末成年小美女| 久久热这里面只有精品| 亚洲AV久久婷婷蜜臀无码不卡| yellow免费观看完整版直播| 老熟女重囗味GRANNYBBW| 亚洲haose在线观看| 久久久久久天天夜夜天天| 色妺妺免费影院| 97超级碰久久久久香蕉人人| 狠狠插综合| 无码AV精品久久一区二区免费| 别停好爽好深好大好舒服视频| 麻豆啊传媒app黄版破解免费 | 无码成A毛片免费| 成人精品视频在线观看播放| 哒哒哒影院在线观看免费高清| 榴莲推广APP网站入口官网| 亚洲免费在线视频观看| 国产电影一区二区三区| 日韩av片无码一区二区不卡电影| 97SE亚洲国产综合在线| 久久久久999| 在线观看国产亚洲| 久久强奷乱码老熟女| 野花日本韩国视频免费高清观看 | 亚洲AV久久婷婷蜜臀无码不卡| 国产精品系列在线观看| 天堂Av亚洲欧美日韩国产综合 |