JAVA教程第七講Swing用戶界面設(shè)計7.1

字號:

7.1 Swing簡介
    7.1.1 簡介
    第五講中我們學(xué)習(xí)了AWT,AWT是Swing的基礎(chǔ)。Swing的產(chǎn)生主要原因就是AWT不能滿足圖形化用戶界面發(fā)展的需要。
    AWT設(shè)計的初衷是支持開發(fā)小應(yīng)用程序的簡單用戶界面。例如AWT缺少剪貼板、打印支持、鍵盤導(dǎo)航等特性,而且原來的AWT甚至不包括彈出式菜單或滾動窗格等基本元素。
    此外AWT還存在著嚴(yán)重的缺陷,人們使AWT適應(yīng)基于繼承的、具有很大伸縮性的事件模型,基于同位體的體系結(jié)構(gòu)也成為其致命的弱點(diǎn)。
    隨著發(fā)展的需要,Swing出現(xiàn)了,Swing組件幾乎都是輕量組件,與重量組件相比,沒有本地的對等組件,不像重量組件要在它們自己的本地不透明窗體中繪制,輕量組件在它們的重量組件的窗口中繪制。
    這一講我們講一下基本的Swing組件使用方法和使用Swing組件創(chuàng)建用戶界面的初步方法。
    Swing是由100%純Java實(shí)現(xiàn)的,Swing組件是用Java實(shí)現(xiàn)的輕量級( light-weight)組件,沒有本地代碼,不依賴操作系統(tǒng)的支持,這是它與AWT組件的區(qū)別。由于AWT組件通過與具體平臺相關(guān)的對等類(Peer)實(shí)現(xiàn),因此Swing比AWT組件具有更強(qiáng)的實(shí)用性。Swing在不同的平臺上表現(xiàn)一致,并且有能力提供本地窗口系統(tǒng)不支持的其它特性。
    7.1.4 MVC(Model-View-Control)體系結(jié)構(gòu)
    Swing勝過AWT的主要優(yōu)勢在于MVC體系結(jié)構(gòu)的普遍使用。在一個MVC用戶界面中,存三個通訊對象:模型、視圖和控件。模型是指定的邏輯表示法,視圖是模型的可視化表示法,而控件則指定了如何處理用戶輸入。當(dāng)模型發(fā)生改變時,它會通知所有依賴它的視圖,視圖使用控件指定其相應(yīng)機(jī)制。
    為了簡化組件的設(shè)計工作,在Swing組件中視圖和控件兩部分合為一體。每個組件有一個相關(guān)的分離模型和它使用的界面(包括視圖和控件)。比如,按鈕JButton有一個存儲其狀態(tài)的分離模型ButtonModel對象。組件的模型是自動設(shè)置的,例如一般都使用JButton 而不是使用ButtonModel 對象。另外,通過Model類的子類或通過實(shí)現(xiàn)適當(dāng)?shù)慕涌?,可以為組件建立自己的模型。把數(shù)據(jù)模型與組件聯(lián)系起來用setModel( )方法。
    MVC是現(xiàn)有的編程語言中制作圖形用戶界面的一種通用的思想,其思路是把數(shù)據(jù)的內(nèi)容本身和顯示方式分離開,這樣就使得數(shù)據(jù)的顯示更加靈活多樣。比如,某年級各個班級的學(xué)生人數(shù)是數(shù)據(jù),則顯示方式是多種多樣的,可以采用柱狀圖顯示,也可以采用餅圖顯示,也可以采用直接的數(shù)據(jù)輸出。因此在設(shè)計的時候,就考慮把數(shù)據(jù)和顯示方式分開,對于實(shí)現(xiàn)多種多樣的顯示是非常有幫助的。
    7.1.5 可存取性支持
    所有Swing組件都實(shí)現(xiàn)了Accessible接口,提供對可存取性的支持,使得輔助功能如屏幕閱讀器能夠十分方便的從Swing組件中得到信息。
    7.1.6 支持鍵盤操作
    在Swing組件中,使用JComponent類的registerKeyboardAction()方法,能使用戶通過鍵盤操作來替代鼠標(biāo)驅(qū)動GUI上Swing組件的相應(yīng)動作。有些類還為鍵盤操作提供了更便利的方法。
    其實(shí)這就相當(dāng)于熱鍵,使得用戶可以只用鍵盤進(jìn)行操作。
    7.1.7 設(shè)置邊框
    對Swing組件可以設(shè)置一個和多個邊框。Swing中提供了各式各樣的邊框供用戶選用,也能建立組合邊框或自己設(shè)計邊框。一種空白邊框可以增大組件,協(xié)助布局管理器對容器中的組件進(jìn)行合理的布局。