資源描述:
《用戶界面組件課件》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、Swing用戶界面組件模型-視圖-控制器設(shè)計(jì)模式每個(gè)組件有三個(gè)要素內(nèi)容,如按鈕的狀態(tài)(是否按下),或者文本域的文本;外觀,顏色,大小等;行為,對事件的反應(yīng);三要素之間的關(guān)系復(fù)雜Java模型-視圖-控制器設(shè)計(jì)模式Swing設(shè)計(jì)者采用了一種著名的設(shè)計(jì)模式:模型-視圖-控制器(model-view-controller)模式來實(shí)現(xiàn)組件的設(shè)計(jì)。實(shí)現(xiàn)一個(gè)組件有三個(gè)獨(dú)立的類:模型(model):存儲(chǔ)內(nèi)容;視圖(view):顯示內(nèi)容;控制器(controller):處理用戶輸入;Java模型-視圖-控制器設(shè)計(jì)模式模型只存儲(chǔ)內(nèi)容,必須實(shí)現(xiàn)改變內(nèi)容和查找內(nèi)容
2、的方法。如,一個(gè)文本模型中的方法有:在當(dāng)前文本中添加或者刪除字符以及把當(dāng)前文本作為一個(gè)字符串返回等;模型完全不可見,視圖顯示存儲(chǔ)在模型中的數(shù)據(jù);控制器負(fù)責(zé)處理用戶輸入事件,如點(diǎn)擊鼠標(biāo)和敲擊鍵盤。然后決定是否把這些事件轉(zhuǎn)化為對模型或視圖的改變;Java模型-視圖-控制器設(shè)計(jì)模式Java模型、視圖、控制器對象之間的交互模型-視圖-控制器設(shè)計(jì)模式Swing按鈕的模型-視圖-控制器分析對于大多數(shù)組件,模型類實(shí)現(xiàn)了名字結(jié)尾為Model的接口,如:按鈕就實(shí)現(xiàn)了ButtonModel接口;可以通過查看ButtonModel接口中的方法來獲知按鈕模型維護(hù)的
3、是哪種類型的數(shù)據(jù);Java模型-視圖-控制器設(shè)計(jì)模式Swing庫中包含了一個(gè)名為DefaultButtonModel的類,該類實(shí)現(xiàn)了ButtonModel接口,是JButton的模型類;該類同時(shí)也可作為單選按鈕、復(fù)選框等的模型類;視圖和感觀相關(guān)聯(lián),不同感觀對應(yīng)的視圖有所不同;當(dāng)使用Metal觀感時(shí),JButton類用BasicButtonUI類作為其視圖,用ButtonUIListener類作為控制器;JButton是一個(gè)繼承了JComponent的包裝器類,包含了一個(gè)DefaultButtonModel對象,一些視圖數(shù)據(jù)以及一個(gè)負(fù)責(zé)按鈕視
4、圖的BasicButtonUI對象(Metal感觀);JButtonbutton=newJButton(“Blue”);ButtonModelmodel=button.getModel();ButtonUIui=button.getUI();Java布局管理器容器內(nèi)的所有組件的排放由一個(gè)布局管理器(layoutmanager)進(jìn)行管理。java.awt.Containercontainer.setLayout(LayoutObject);Java布局管理器常用布局管理器流布局管理器(FlowLayout)邊界布局管理器(BorderLayo
5、ut)網(wǎng)格布局管理器(GridLayout)Java布局管理器流布局管理器(FlowLayout)其特點(diǎn)是在一行上水平排列組件,直到?jīng)]有足夠的空間為止,再開始新的一行;面板(JPanel)的默認(rèn)布局管理器;當(dāng)用戶縮放容器時(shí),布局管理器自動(dòng)地調(diào)整組件的位置使其填充可用的空間;但容器中組件的大小不會(huì)變;默認(rèn)情況下,組件是在一行上居中顯示。程序員可以設(shè)置容器中的組件按左對齊或者右對齊的方式排列;panel.setLayout(newFlowLayout(FlowLayout.LEFT));Java布局管理器流布局管理器(FlowLayout)ja
6、va.awt.Layout;FlowLayout();FlowLayout(intalign);FlowLayout(intalign,inthgap,intvgap);常用的行對齊方式FlowLayout.CENTER;FlowLayout.LEFT;FlowLayout.RIGHT;Java布局管理器邊界布局管理器(BorderLayout)將整個(gè)容器分為中部、北部、南部、東部或者西部五個(gè)區(qū)域;程序員可以選擇將組件放在哪個(gè)區(qū)域;默認(rèn)放在中部;JFrame的內(nèi)容窗格的默認(rèn)布局管理器;frame.add(button,BorderLayou
7、t.SOUTH);Java布局管理器邊界布局管理器(BorderLayout)邊界布局管理器在安放組件時(shí),會(huì)先放入邊緣組件,剩余的可用空間由中間組件占用,如果有某個(gè)邊緣組件空缺,其它組件會(huì)填充該邊緣位置;容器縮放時(shí),邊界布局會(huì)擴(kuò)大所有組件的尺寸以便填充可用空間,但邊緣組件的厚度不會(huì)改變,長度會(huì)有所改變,而中間組件的大小會(huì)發(fā)生變化;Java布局管理器java.awt.BorderLayout類BorderLayout();BorderLayout(inthgap,intvgap);Java布局管理器將一個(gè)組件放在邊界布局管理器的某個(gè)部分時(shí),其
8、會(huì)填充整個(gè)部分的空間,如果此時(shí)再放入另一個(gè)組入到相同的部分,則后放入的組件會(huì)覆蓋前一個(gè)組件;publicclassBorderLayoutTest{publicstaticvoi