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

當(dāng)程序入口啟動時,框架解析bean-config.xml文件;組件工廠類根據(jù)xml配置文件創(chuàng)建各種組件對象;組件外觀設(shè)置類查找xml文件為每個組件設(shè)置相應(yīng)的外觀;事件監(jiān)聽器類查找xml文件為每個組件添加對應(yīng)的事件監(jiān)聽器;事件執(zhí)行類查找xml文件為每個組件設(shè)置事件觸發(fā)時執(zhí)行的方法;最后還需要一個保存窗體對象的類。
圖形用戶界面(GUI)借助于多種組件,包括菜單、按鈕、文本框、選擇框、列表框等,通過相應(yīng)的事件處理機制,實現(xiàn)與用戶的動態(tài)交互。
1 圖形用戶界面的建立
1.1 創(chuàng)建GUI窗口
javax.swing.JFrame類是用來建立用戶界面的底層窗口容器,能夠容納其他組件的對象,如標簽、按鈕、文本組件等。JFrame類提供的add()方法把不同的組件添加到容器中,通過容器類的setLayout()方法可以設(shè)定容器的布局,安排各種組件在容器中。
使用JFrame類創(chuàng)建GUI窗口的基本步驟如下:用JFrame類或其子類創(chuàng)建一個對象即窗體;設(shè)置窗口的部分屬性,如標題、寬度、高度、可見性、圖標等;添加內(nèi)容面板、組件;編寫事件處理方法;組件添加事件監(jiān)聽。
1.2 Java事件處理
在Java中,程序與用戶的交互通過響應(yīng)各種事件來實現(xiàn)。每當(dāng)一個事件發(fā)生,Java虛擬機就會將事件的消息傳遞給程序,由程序中的事件處理方法對事件進行處理。Java通過委托型事件處理機制來解決對事件的響應(yīng)。
事件處理機制可表述如下[2]:事件源對象封裝了事件源、組件狀態(tài)等必要信息;當(dāng)事件源對象發(fā)生改變時,向它所注冊的所有監(jiān)聽器發(fā)出通知,各監(jiān)聽器判斷事件類型是否為自己管轄范圍,若是,則通知給該監(jiān)聽器的執(zhí)行器,執(zhí)行器從事件中獲取事件信息,并執(zhí)行相應(yīng)函數(shù),改變組件的狀態(tài)。
1.3 傳統(tǒng)創(chuàng)建窗口和事件處理的局限性
在傳統(tǒng)的GUI創(chuàng)建過程中,存在一些局限性。
?。?)組件創(chuàng)建、添加都采用硬編碼方式,造成程序的過度耦合。
(2)如果窗體中有很多組件,組件要添加注冊監(jiān)聽,則在代碼中看到很多重復(fù)注冊監(jiān)聽的代碼,而這些注冊監(jiān)聽的代碼都與界面本身設(shè)計無關(guān),組件與事件之間的映射關(guān)系將會很混亂。
?。?)事件處理方法定義在別的類中,無法得到窗體及其組件的引用,只能得到事件源,而無法改變其他組件的狀態(tài);或者把事件處理與窗體設(shè)計放在一起,這樣程序的可維護性又不好。
?。?)不利于代碼重用,基于MVC的思想,應(yīng)該把事件處理方法分離出來;在需要修改事件處理代碼時,就無需修改界面本身的源代碼。
2 圖形用戶界面設(shè)計的改進
2.1 控制反轉(zhuǎn)(IOC)
IOC就是控制反轉(zhuǎn)[3](Inversion of Control)的縮寫,也稱為依賴注入,控制反轉(zhuǎn)IOC是一種用于控制業(yè)務(wù)對象之間依賴關(guān)系的機制,將其設(shè)計的類與類之間的關(guān)系都交由外部容器進行管理,僅需調(diào)用類在容器中注冊的名字就可以得到類的實例,有效降低了業(yè)務(wù)對象之間的依賴程度,實現(xiàn)了業(yè)務(wù)對象之間的松散耦合。
IOC的實際意義就是把組件之間的依賴關(guān)系(調(diào)用關(guān)系)反轉(zhuǎn)出來,對象之前的依賴關(guān)系用xml配置文件描述;這樣,各個組件之間就不存在硬編碼的關(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實現(xiàn)了接口ICar,即類Driver可以依賴于Toyota或Honda。
運用了IOC模式后就不再需要自己管理組件之間的依賴關(guān)系,只需要聲明由xml配置文件描述去實現(xiàn)這種依賴關(guān)系,就好像把對組件之間的依賴關(guān)系的控制進行了倒置,不再由組件自己來建立這種依賴關(guān)系而是交給xml配置文件去管理。
2.2 設(shè)計的改進
在改進的GUI編程中,把窗體中組件的創(chuàng)建、組件的外觀設(shè)置和組件觸發(fā)事件時執(zhí)行什么方法,不是以硬編碼的方式組合在一起,而是通過配置文件來配置。這樣開發(fā)人員無須關(guān)心組件的創(chuàng)建、組件的樣式設(shè)置、事件的監(jiān)聽與實現(xiàn),只需要設(shè)置相應(yīng)的get、set方法來存取組件、屬性等,事件處理方法能在任意類中實現(xiàn),方法名可以自定義,并且在其他類中能夠得到窗體對象及其組件的引用。當(dāng)組件的樣式發(fā)生改變時,只需改動配置文件即可。
該改進設(shè)計通過配置文件,并利用控制反轉(zhuǎn)和Java反射機制得以實現(xiàn),這就需要有框架和良好的設(shè)計。
3 框架運行機理
框架中各組成部分在運行過程中的調(diào)用關(guān)系如圖1所示。

當(dāng)程序入口啟動時,框架解析bean-config.xml文件;組件工廠類根據(jù)xml配置文件創(chuàng)建各種組件對象;組件外觀設(shè)置類查找xml文件為每個組件設(shè)置相應(yīng)的外觀;事件監(jiān)聽器類查找xml文件為每個組件添加對應(yīng)的事件監(jiān)聽器;事件執(zhí)行類查找xml文件為每個組件設(shè)置事件觸發(fā)時執(zhí)行的方法;最后還需要一個保存窗體對象的類。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 智慧城市方案框架設(shè)計 0次下載
- 多旋翼飛行器設(shè)計與控制的機架設(shè)計 0次下載
- 引射氏跨聲速風(fēng)洞流暢控制軟件設(shè)計方案 4次下載
- 天然氣運輸站的PLC控制系統(tǒng)設(shè)計方案 39次下載
- 基于MASK模型的視頻問答機制設(shè)計方案 2次下載
- java教程之GUI如何進行事件處理 13次下載
- java教程之GUI設(shè)計初步資料免費下載 13次下載
- 單片機控制和藍牙通信的小冰箱設(shè)計方案 16次下載
- 基于matlab GUI的彩色圖像處理技術(shù)設(shè)計方案資料下載 29次下載
- java學(xué)習(xí)——java中的反射學(xué)習(xí)筆記 0次下載
- 基于ARMCortex_M4的MOX中斷機制分析與中斷程序框架設(shè)計 4次下載
- 基于ARM Cortex-M4的MQX中斷機制分析與中斷程序框架設(shè)計 6次下載
- 基于Java反射機制的Excel文件導(dǎo)出實現(xiàn)_楊敏煜 1次下載
- 基于CAN總線的通訊系統(tǒng)軟件框架設(shè)計 21次下載
- 基于GIS的城鄉(xiāng)公交系統(tǒng)框架設(shè)計與實現(xiàn)
- SSM框架的源碼解析與理解 331次閱讀
- PLC控制電動機正反轉(zhuǎn)電路的工作原理 2210次閱讀
- Rust語言中的反射機制 2501次閱讀
- 大模型部署框架FastLLM實現(xiàn)細節(jié)解析 1366次閱讀
- Java反射技術(shù)實現(xiàn)對象的創(chuàng)建 2336次閱讀
- Java中如何解析、格式化、生成SQL語句? 1010次閱讀
- 嵌入式里通用微秒計時函數(shù)框架設(shè)計與實現(xiàn) 1920次閱讀
- 移植開源Gui框架GuiLite到STM32F4OLED屏幕 3622次閱讀
- HDF驅(qū)動框架中USB DDK的解析與開發(fā)指導(dǎo) 2259次閱讀
- 基于java的負載均衡算法解析及源碼分享 2238次閱讀
- java單元測試框架有哪些 1.4w次閱讀
- 基于AMBA-AHB總線的SDRAM控制器設(shè)計方案 4624次閱讀
- 基于RT-Thread和STM32的數(shù)碼相框設(shè)計方案 5573次閱讀
- 基于MSP430的智能小車尋跡模塊設(shè)計方案 1.3w次閱讀
- LED大屏幕控制電路設(shè)計方案研究 2629次閱讀
下載排行
本周
- 1EMC電路設(shè)計工程師必備的EMC基礎(chǔ)
- 0.42 MB | 4次下載 | 2 積分
- 2AU3116 2×60W模擬輸入雙通道Class-D 音頻功率放大器數(shù)據(jù)手冊
- 1.19 MB | 1次下載 | 免費
- 3低壓降肖特基整流管SR340L數(shù)據(jù)手冊
- 0.78 MB | 1次下載 | 免費
- 4ZX8002E 觸摸調(diào)光LED集成IC數(shù)據(jù)手冊
- 2.27 MB | 次下載 | 免費
- 5SOD-323塑料封裝ESD保護二極管SD05T系列規(guī)格書
- 1.07 MB | 次下載 | 免費
- 6SOT-23塑料封裝ESD保護二極管SMxx Series系列規(guī)格書
- 0.93 MB | 次下載 | 免費
- 7高效率整流二極管HER151 THRU HER158數(shù)據(jù)手冊
- 0.54 MB | 次下載 | 免費
- 8低壓降肖特基整流管SL22 THRU SL210數(shù)據(jù)手冊
- 1.03 MB | 次下載 | 免費
本月
- 1三相逆變主電路的原理圖和PCB資料合集免費下載
- 27.35 MB | 111次下載 | 1 積分
- 2運算放大器基本電路中文資料
- 1.30 MB | 16次下載 | 免費
- 3蘋果iphone 11電路原理圖
- 4.98 MB | 11次下載 | 5 積分
- 4TL494工業(yè)用開關(guān)電源原理圖資料
- 0.22 MB | 10次下載 | 1 積分
- 5常用電子元器件介紹
- 3.21 MB | 8次下載 | 免費
- 6QW2893應(yīng)急燈專用檢測芯片
- 590.40 KB | 4次下載 | 免費
- 7相關(guān)協(xié)議信號總結(jié)
- 0.94 MB | 4次下載 | 免費
- 8EMC電路設(shè)計工程師必備的EMC基礎(chǔ)
- 0.42 MB | 4次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935130次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191390次下載 | 10 積分
- 5十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183344次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81591次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評論