201711671118《Java程式設計》第九章總結
9.1 JAVA SWING概述
通過圖形使用者介面(GUI),使用者和程式之間可以進行互動。
Java.awt包提供了許多原來設計GUI的元件類。
容器類(container)和元件類(component):
javax.swing包中的Jcomponent類是java.awt包中Container的一個直接子類,是java.awt包中的Component類的一個間接子類。
java把Component類的子類或間接子類建立的物件成為一個元件。
java把Container的子類或間接子類建立的物件成為一個容器。
Container類提供public方法add(),呼叫方法將元件新增到容器中。
removeAll()方法可以移除容器中的全部元件。
remove(Component c)方法移除元件c。
容器巢狀:容器也是一個元件,一個容器可以新增到另一個容器當中。
validate()方法:當容器新增新的元件或者移除元件時,應當呼叫validate方法,以確保元件的正常顯示。
9.2 視窗
一個基於GUI的應用程式應當提供一個能和作業系統直接互動的容器,該容器可以被直接顯示、繪製在作業系統控制的平臺上,如顯示器,這樣的容器被稱為GUI設計的底層容器。Jframe類例項是一個底層容器,即視窗。當需要一個視窗時,可使用Jframe或子類建立一個物件,視窗也是一個容器,可以向視窗新增元件,不允許將視窗新增到其他容器中。
9.2.1 JFrame常用方法
Jframe()建立一個無標題視窗。
Jframe(String s)建立標題為s的視窗。
public void setBounds(int a,int b,int width,int height)設定視窗位置(a,b),左上邊為原點,寬為width,高為height。
public void setVisible(boolean b)設定視窗是否可見,預設false。
public void setResizable(boolean b)設定視窗是否可以調整大小,預設為true。
public void dispose()撤銷當前視窗,並釋放當前視窗使用的資源。
9.2.2 選單條、選單、選單項
Jcomponet的子類Jmenubar負責建立選單條。
Jmenu負責建立選單。
JmenuItem負責檢建立選單項。
Jmenu是JmenuItem的子類,因此選單本身也是一個選單項。
Icon宣告一個圖示,使用其子類ImageIcon類建立一個圖示:Icon icon=new ImageIcon(“a.gif”),選單項呼叫setIcon(Icon icon)方法將圖示設定為icon
9.3常用元件與佈局
9.3.1 常見元件
JTextField(文字框):允許使用者在文字框輸入單行文字
JTeextArea(文字區):允許使用者在文字區中輸入多行文字
JButton(按鈕):允許使用者單擊按鈕
JLabel(標籤):標籤為使用者提供資訊
JCheckBox(複選框):為使用者提供多種選擇
JRadioButton(單選按鈕):為使用者提供單項選擇。
JPasswordField(密碼框):使用者輸入密碼時,預設回顯為“*”.
9.3.2 常用容器(本節提到的是中間容器)
JPanel面板:JPanel建立一個面板,預設佈局:FlowLayout
JTabbedPane選項卡窗格:向容器新增一個元件時,容器會自動為該元件指定一個選項卡。個選項卡元件層疊式放入容器,單擊選項卡時,顯示相應的元件。
JScrollPane滾動窗格:滾動窗格可以新增一個元件,JTextArea不自帶滾動條,因此就需要把文字區放到一個滾動窗格,如:JScrollPane scroll=new JScrollPane(new JTextArea());
JSplitPane拆分窗格:被分成兩部分的容器,每部分有一個元件。
JLayeredPane分層窗格:如果新增容器中的元件經常需要待處理疊加問題,可以考慮將元件新增到分層窗格。
9.3.3 常用佈局
FlowLayout佈局:由左向右依次排序元件,排滿裝行,可以改變對齊方式。
BorderLayout佈局:容器分為上、下、左、右、中五個區域。
CardLayout佈局:元件測得放入容器。
GridLayout佈局:將容器劃分為等大小的網格區域。元件就位於網格中。
null佈局:空佈局,元件可以準確定位在容器的某個位置中
BoxLayout佈局:當需要容器巢狀時,使用BoxLayout佈局。
9.4處理事件
處理事件包括事件源、監視器、處理事件的介面3個概念。
事件源:能夠產生事件的物件都可以稱為事件源。
監視器:需要一個物件對事件源進行監視,以便對發生的事件作出處理。
處理事件的介面:當事件源發生事件時,監視器就會自動呼叫被類重寫的介面方法。
ActionEvent事件:文字框、按鈕、選單項、密碼框和單選框按鈕都可以觸發ActionEvent事件,即可以稱為ActionEvent事件的事件源。
ItemEvent事件:選擇框、下拉列表都可以觸發ItemEvent事件。
DocumentEvent事件:使用者在文字區中進行文字編輯操作,使得文字區的文字內容發生變化,將導致文字區所維護的文件模式中的資料發生變化,從而導致文字區所維護的文件觸發DocumentEvent事件。
MouseEvent事件:任何元件都可以發生滑鼠事件。
FocusEvent焦點事件:元件可以觸發焦點事件。
KeyEvent事件:按下、釋放、敲擊鍵盤上一個鍵就會觸發鍵盤事件。
WindowEvent事件:當一個視窗被啟用、撤銷啟用、開啟、關閉、圖示化、撤銷圖示化,觸發視窗事件。
9.5 使用MVC結構(模型-檢視-控制器)
模型:用於儲存資料的物件。
檢視:為模型提供資料顯示的物件
控制器:處理使用者的互動操作
9.6 對話方塊
對話方塊分為無模式和有模式兩種。當這個對話方塊處於啟用狀態時,只讓程式響應對話方塊內部的事件,而且將堵塞其它執行緒的執行,使用者不能再啟用對話方塊所在程式中的其它視窗,直到該對話方塊消失不可見。無模式對話方塊:當這個對話方塊處於啟用狀態時,能再啟用其它視窗,也不堵塞其它執行緒的執行。