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