580 likes | 783 Views
JAVA 2 新觀念教本. --- 邁向 SCJP 專業認證 ---. 易瓏資訊 林新德 著. 第 15 章 AWT 視窗程式設計. Java 的圖形化使用者介面 AWT 元件的繼承關係 容器 事件的處理 AWT 基本元件 版面配置. 15-1 Java 的圖形化使用者介面. 15-1 Java 的圖形化使用者介面. Microsoft Word的一個擷取畫面,可以看到其組成包括選單(Menu)、文字列(TextField)及按鈕(Button)等元件。. 15-1-1 認識圖形化使用者介面. 15-1 Java 的圖形化使用者介面.
E N D
JAVA 2 新觀念教本 ---邁向SCJP專業認證--- 易瓏資訊 林新德 著
第15章 AWT視窗程式設計 • Java的圖形化使用者介面 • AWT元件的繼承關係 • 容器 • 事件的處理 • AWT基本元件 • 版面配置
15-1 Java的圖形化使用者介面
15-1 Java的圖形化使用者介面 Microsoft Word的一個擷取畫面,可以看到其組成包括選單(Menu)、文字列(TextField)及按鈕(Button)等元件。 15-1-1 認識圖形化使用者介面
15-1 Java的圖形化使用者介面 舊的圖形介面工具AWT(Abstract Window Toolkit) 新的圖形介面工具Swing 整合工具Accessibility API 高品質繪圖功能的2D API 拖曳功能(drag and drop)的API 15-1-1 認識圖形化使用者介面 • Java Foundation Classes包括的部份:
15-1 Java的圖形化使用者介面 15-1-2AWT • AWT使用大家都有的功能
15-1 Java的圖形化使用者介面 15-1-2AWT • AWT元件在不同作業系統的外觀不同
15-1 Java的圖形化使用者介面 幾乎無法延伸子類別 在不同系統上外觀相異 消耗較多的系統資源 15-1-2AWT • AWT的缺點: • AWT直接和視窗作業系統溝通,所以元件初始化之後,其執行的速度會比Swing快一些。
15-1 Java的圖形化使用者介面 可以利用擴充子類別改進元件的功能 固定的外觀 耗用較低的系統資源 15-1-3Swing • Swing的優點: • Swing和一般的Java工具一樣擁用跨平台的優點,然而也有著相同的缺點,就是較慢一點點。
15-2 AWT元件的繼承關係
15-2 AWT元件的繼承關係 15-2-1Component的延伸類別
15-2 AWT元件的繼承關係 15-2-2MenuComponent的延伸類別
15-2 AWT元件的繼承關係 15-2-2MenuComponent的延伸類別 • 以「記事本」為例說明選單及其相關元件
15-2 AWT元件的繼承關係 建立元件 將元件加入容器 配置容器內元件的位置 處理由元件所產生的事件 15-2-3 建立GUI的步驟
15-3 容器
15-3 容器 • Container的延伸類別
15-3 容器 Frame類別可以建立圖形化系統的視窗,通常稱之為框架。 一個程式可以擁有一個以上的框架。 Frame是AWT的頂層元件。 Frame顯示有邊框的視窗,邊框的標題列可以讓使用者在螢幕上拖曳整個框架,也可以由邊框改變框架的大小。 15-3-1Frame
15-3 容器 Frame的建構子及常用方法 15-3-1Frame
15-3 容器 Panel的預設版面管理員為FlowLayout。 FlowLayout會將容器中的元件依照元件的偏好大小,從左至右、由上到下排列。 Panel和檔案目錄夾的概念是一樣的,可以有巢狀的結構。 15-3-2Panel
15-3 容器 Dialog物件也是頂層元件,不過它必須依附在Frame或其它Dialog上。 Dialog物件的主要用處是當做對話的小視窗,其邊框上只有關閉按鈕,沒有最小化或最大化的按鈕。 Dialog的預設版面管理員為BorderLayout。 15-3-3Dialog
15-4 事件的處理
15-4 事件的處理 事件(event)其實是就是一種物件。 元件透過傳送事件物件(event object)的方式,傳達使用者按下滑鼠按鈕或鍵盤按鍵等事件。 事件本身就存在特定的事件資訊,接收事件的傾聽者可以由事件的資訊進行處理。 欲讓事件能順利由來源元件傳送給傾聽者處理,必須將傾聽者指定給元件(相當於一種註冊動作)。 AWT元件可以使用的事件和傾聽者都包含在java.awt.event套件裡。 15-4-1 事件
15-4 事件的處理 每個傾聽者都必須實作傾聽者介面或是繼承自轉接者(Adapter)。 轉接者為實作傾聽者介面的類別,其定義的傾聽者方法都是空方法,不對事件作任何處理。 傾聽者介面都以Listener為識別字尾,而轉接者都以Adapter為識別字尾 傾聽者方法都是以 void定義,參數為事件,不回傳任何值。 15-4-2 傾聽者
15-4 事件的處理 元件加入傾聽者是使用add???Listener()方法,???表示某種型態的事件。 元件解除和傾聽者之間的關係,不再將發生的事件傳給傾聽者,使用remove???Listener()方法。 一個事件來源可以將事件傳送給多個傾聽者,而多個不同來源的事件也可以傳送給單一個傾聽者。 15-4-3 事件的傳送
15-4 事件的處理 傾聽者和來源物件沒有一對一的限定 15-4-3 事件的傳送
15-4 事件的處理 容器的傾聽者介面 15-4-4 傾聽者介面
15-4 事件的處理 MyWindowClosing.java:需要在框架上的關閉鈕加入離開程式的功能時,可以建立MyWindowClosing物件並設定給框架作為傾聽者。 15-4-4 傾聽者介面 import java.awt.*; import java.awt.event.*; class MyWindowClosing extends WindowAdapter { void windowClosing(WindowEvent e){ System.exit(0); } }
15-5 AWT基本元件
15-5 AWT基本元件 Label的建構子或方法 15-5-1Label和Button元件
15-5 AWT基本元件 Button的建構子或方法 15-5-1Label和Button元件
15-5 AWT基本元件 Checkbox元件的兩種外觀 四方形的為獨立的核選盒,當其它的核選盒狀態改變時並不會影響到該核選盒。 圓形的核選盒(radio button)屬於某個CheckboxGroup。 15-5-2Checkbox元件
15-5 AWT基本元件 15-5-2Checkbox元件
15-5 AWT基本元件 TextComponent的常用方法 15-5-3TextField與TextArea元件
15-5 AWT基本元件 TextField建構子及方法 15-5-3TextField與TextArea元件
15-5 AWT基本元件 TextArea建構子及方法 15-5-3TextField與TextArea元件
15-5 AWT基本元件 15-5-4Choice元件
15-5 AWT基本元件 15-5-5List元件
15-5 AWT基本元件 Canvas元件:用來顯示繪圖結果的元件。 Canvas元件可以利用getGraphics()方法取得一個Graphics物件,透過Graphics物件的方法就可以畫出幾何圖形或影像。 15-5-6Canvas元件
15-5 AWT基本元件 捲軸的性質 15-5-7Scrollbar元件
15-5 AWT基本元件 Scrollbar的建構子 15-5-7Scrollbar元件
15-5 AWT基本元件 Scrollbar的常用方法
15-5 AWT基本元件 框架可以加入一個選單列(MenuBar)。 選單列裡可以有數個選單(Menu)。 選單內又可以有數個選項(MenuItem)和核選式選項(ChechboxMenuItem)。 點選選項時,會發生ActionEvent,可以使用ActionListener傾聽;點選核選式選項時,則是發生ItemEvent,可以使用ItemListener傾聽。 15-5-8使用選單
15-6 版面配置
15-6 版面配置 配置管理員會依循特別的配置規則,按照容器的大小,動態配置元件的位置,並不會將元件固定在確切的位置上 配置管理員有五種,分別屬於不同的類別:FlowLayout(循序配置)、BorderLayout(邊緣配置)、GridLayout(格式配置)、GridBagLayout(格群配置)和CardLayout(卡式配置)。 巢狀的配置管理搭配Panel使用,可以製作出複雜的版面配置。
15-6 版面配置 FlowLayout是Panel的預設配置管理員。 預設的FlowLayout會把元件放在中央,當容器的寬度不夠放時,才將後續的元件往下擺放,而且元件間的空白距離垂直和水平方向皆為5個像素。 指定配置管理員給容器時,可以利用Container的setLayout()方法來設定,其參數為LayoutManager物件即可。 15-6-1FlowLayout
15-6 版面配置 FlowLayout建構子和方法 15-6-1FlowLayout
15-6 版面配置 BorderLayout會將收納器分成,東、西、南、北、中,五個區域,每個區域只能放入一個元件,所以最多只能放入五個元件。 每個區域也可以放入收納器,是很方便的配置管理員。 加入元件時,第二個參數指定放置元件的區域,如“East”、“West”、“South”、“North”或“Center”。 15-6-2BorderLayout
15-6 版面配置 “North” 和 “South” 區的元件會和容器同寬,高度為元件的偏好高度。 “East” 和 “West” 區的元件寬度為偏好寬度,高度為容器高減去南北兩區元件的高度。 “Center” 區的元件大小則是減去東西南北四區元件所佔的空間,剩下的部份就是該區元件的大小。 15-6-2BorderLayout • BorderLayout的配置規則: