Download presentation
Presentation is loading. Please wait.
1
Java Applet 與事件處理 ShengMinMa
2
Outline Java Applet 的基礎 建立Java Applet AWT套件的GUI元件 Java Applet 的繪圖
3
Java Applet 的基礎 Applet類別是定義在java.applet套件,提供建立Java Applet所需的方法。
Java Applet的外觀就是在Panel元件上繪出的圖形,文字或GUI元件 Java Applet並不是完整的Java程式, 所以並不能在命令提示字元視窗執行, 而是需要透過Applet檢視器,或瀏覽 程式來執行Java Applet。
4
Java Applet 的基礎 下圖圖例在伺服端的Java Applet已經編譯成.class類別檔,HTML網頁使用<applet>標籤嵌入Java Applet類別檔。 客戶端只需瀏覽程式支援JVM,再請求伺服端擁有Java Applet的網頁時,*.class和*.html檔案都會下載到客戶端,然後在瀏覽程式執行Java Applet來顯示網頁內容。
5
Java Applet 的基礎 <applet>標籤 <param>標籤
<applet>標籤可以將Java Applet嵌入網頁 基本語法: <applet code=“class_name” width=value height=value> … </applet> 說明: Code 屬性:Java applet 的類別檔案名稱。 Width 屬性:Java applet尺寸的寬。 Height 屬性 : Java applet尺寸的高。 <param>標籤 <param>標籤是用來傳遞參數給Java Applet <param name=“para_name” value=value> Name 屬性:參數名稱。 Value 屬性:參數值。
6
建立Java Applet Java Applet 程式是繼承自Applet類別,然後實作或覆寫Applet的方法,這個新類別就是Java Applet程式。 在Java Applet程式的開頭匯入Applet和Graphics套件,類別實作paint()方法,及drawString方法。 範例Ch16_2_1.java 方法 說明 Void drawString(String,int,int) 顯示參數String字串的內容,後面兩個參數分別是位置座標x和y的值。 Void paint(Graphics) Applet的顯示方法,繼承自Container類別方法,可以Panel物件上繪出Java Applet顯示的圖形或文字。
7
建立Java Applet Java Applet的執行過程:下表四個方法是瀏覽程式或Applet檢視器執行Java Applet的初始,開始,停止和善後的四個過程。 方法 說明 Void init() 當瀏覽程式或Applet檢視器載入和建立Java Applet時,呼叫此方法。 Void start() 開始Java Applet的執行,當載入Applet或是使用者進入一頁內含applet的網頁時,呼叫此方法 Void stop() 停止Java Applet的執行,當使用者離開包含Applet的網頁或結束瀏覽程式的執行時,呼叫此方法。 Void destroy() 當離開瀏覽程式時呼叫此方法,這各方法是用來執行最後的善後操作。
8
void drawRect(int,int,int,int)
建立Java Applet Java Applet可以使用repaint()方法重繪Java Applet,也可使用繼承自Component類別的getSize()方法取得Java Applet的尺寸。 如: recWidth=getSize().width; 或 recWidth=getWidth(); recHeight=getsize().Height 或 recHeight=getHeight(); Graphics的繪圖方法: (範例Ch16_2_2.java) 方法 說明 void drawRect(int,int,int,int) 繪出長方形,前兩個int參數是左上角座標(x,y),後兩個分別為長方形的寬和高 void repaint() 重新繪出容器元件的圖形,以本章為例,就是重繪Java Applet。
9
建立Java Applet 將參數傳遞給Java Applet:
在HTML文件可以使用<param>標籤傳遞參數給Java Applet,如果<applet>標籤擁有<param>標籤,在Java Applet是使用getParameter()方法取得傳如參數。 Inc = Integer.parseInt(getParameter(“INC”)); Offset = Integer.parseInt(getParameter(“OFFSET”)); 繪出具色彩的圖形: void setColor(Color):設定目前使用的色彩,參數是Color的色彩物件。 void fillRect(int,int,int,int):繪出一個填滿色彩的長方形,前兩個int參數是左上角座標(x,y),後兩各分別為長方形的寬和高。 常用色彩物件常數:Color.white Color.black Color.red Color.green Color.blue Color.yellow Color.lightGray 範例:Ch16_2_3.java
10
AWT套件的GUI元件 Java API類別函式庫【AWT】(Abstract Window Toolkit)提供基本的GUI圖形介面的元件。 在Panel物件新增GUI元件是使用繼承自Container類別方法,如下所示: void add(Component):新增GUI元件到Java Applet,參數是GUI元件。 void remove(Component):從Java Applet移除GUI元件,參數是GUI元件。 AWT提供選擇功能的元件有:Checkbox,CheckboxGroup,Choice,和List元件。 AWT提供文字輸入功能的元件有:TextField和TextArea元件,其他常用元件還有【文字說明】的Label和【按鈕】的Button元件。
11
AWT套件的GUI元件 選擇功能元件 Checkbox元件是核取方塊,按一下可以更改狀態值。
Checkbox checkBox = new Checkbox(“是否顯示”,true); CheckboxGroup元件是選擇紐,一組選擇紐,只能有一個為True。 CheckboxGroup group = new CheckboxGroup(); Checkbox red = new Checkbox(“紅” , group , true); Checkbox blue = new Checkbox(“藍”,group , false); Choice是下拉式清單元件,只顯示一個項目。 Choice color = new Choice(); color.add(“紅”); color.add(“藍”); color.add(“綠”);
12
AWT套件的GUI元件 選擇功能元件 文字輸入元件 List清單方塊元件是一各擁有捲動軸的清單。 如範例Ch16_3_1.java
List list = new List(5,true); List.add(“平信”); List.add(“掛號”); List.add(“快遞”); List.add(“限時”); 如範例Ch16_3_1.java 文字輸入元件 TextField文字方塊元件允許輸入一行可捲動的文字,再建立物件十可以指定顯示寬度。 TextField text = new TextField(10);
13
AWT套件的GUI元件 文字輸入元件 文字說明元件 TextArea文字區域元件能夠輸入多行文字內容,再建立物件時,可以指定寬和高。
TextArea area = new TextArea(“”,10,30,TextArea.SCROLLBARS_HORIZONTAL_ONLY); 最後一個參數指定文字區域顯示的捲動軸,相關常數如下: SCROLLBARS_NONE:沒有捲動軸 SCROLLBARS_HORIZONTAL_ONLY:只有水平捲動軸 SCROLLBARS_VERTICAL_ONLY:只有垂直捲動軸 SCROLLBARS_BOTH:擁有水平及垂直捲動軸 文字說明元件 Label標籤元件是在GUI介面上顯示文字內容。 Label label = new Label(“使用者名稱:”);
14
AWT套件的GUI元件 按鈕元件 如範例Ch16_3_2.java Button按鈕元箭是一各按鈕,使用滑鼠按一下可以產生事件。
Button button = new Button(“確定”); 如範例Ch16_3_2.java
15
Java Applet的繪圖 Java Applet除了可以新增AWT的GUI元件外,我們還可以在Java Applet上繪圖、載入和顯示現成的圖片檔案。 在Graphics類別提供以下方法繪圖: void drawLine(int,int,int,int) 繪線函數,分別為起點(x,y)與終點(x1,y1) void draw3DRect(int,int,int,int,boolean) 繪方形凹凸面函數,分別為起點(x,y)與終點(x1,y1),true為凹。 void drawRoundRect(int,int,int,int,int,int) 繪圓角方形函數,分別為起點(x,y)與終點(x1,y1),圓角弧度的水平及垂直尺寸。 void drawOval(int,int,int,int) 繪圓函數,圓形是存在於方形之內,分別為左上角座標及寬和高。 void drawArc(int,int,int,int,int,int) 繪弧函數,弧形是存在於方形之內,同上參數說明,最後兩個則是起點角度與終點角度。
16
Java Applet的繪圖 在Graphics類別提供以下方法繪圖:
void drawPolyline(int[],int[],int) 前兩參數陣列座標繪出多邊形,最後一個參數是共有多少點。 上述draw開頭的繪圖方法都具有對應的fill開頭的方法,可以繪出填滿色彩的圖形。並且,指定前景與背景的色彩方法如下: void setBackground(Color) 設定背景色彩,參數為Color的色彩物件。 void setForeground(Color) 設定前景色彩,參數是Color的色彩物件。 如範例Ch16_4_1.java
17
Java Applet的繪圖 Java Applet的圖片載入 載入圖片:
Image getImage(URL) URL參數為一物件,並且回傳至Image物件。 URL為一物件,可用其建購子傳入網址 getImage(new URL( Image getImage(URL,String) 如果圖檔和網頁檔案是儲存在同一個路徑,則在URL物件上填入【getDocumentBase()】或【getCodeBase()】的函數回傳的物件作為URL物件。 Image image = getImage(getDocumentBase(),”abc.gif”);
18
Java Applet的繪圖 顯示圖片: 在載入圖片成為Image物件後,就可以使用Graphics類別的drawImage()方法顯示圖片,方法說明如下。 Boolean drawImage(Image,int,int,ImageObserver) 參數Image為已經載入圖片的Image物件,第二個、第三個參數為圖片放置的座標,ImageObserver直接使用this即可。 回傳值為false:表示失敗 回傳值為true:表示成功 如範例Ch16_4_2.java
19
Java的委託事件處理 Java應用程式的AWT元件屬於【事件驅動】程式設計,程式碼的主要目的是【回應】或【處理】使用者的操作。
如鍵盤輸入,滑鼠按一下 什麼是事件? 事件是再執行視窗應用程式時,滑鼠或鍵盤等操作所觸發的一些動作。 動作發生時可以觸發對應的物件,當一個事件產生後,接下來可以針對事件作處理。
20
Java的委託事件處理 Java SDK 1.1版的事件處理是一種【委託事件處理模型】,可分為【事件來源】(Event Source)和處理事件的【傾聽者】(Listener)的物件。 其中【事件來源】可能是 Component物件的滑鼠,滑鼠移動和鍵盤事件。 或是AWT物件產生的事件。 事件產生時,傾聽者接受事件然後進行處理,傾聽者是一個【委託處理指定事件】的物件。 Java語言是使用【介面】建立【委託事件處理模型】,傾聽者物件只要【實作】一些標準介面的類別物件。
21
Java的委託事件處理 如果沒有傾聽者物件委託處理此事件,當事件發生時,並不會發生任何事。 事件處理就是執行【介面的方法】
AWTEvent事件:【Java事件的來源物件】產生的事件就是一個物件,這些【事件物件】都屬於AWTEvent的子類別。其中分為兩種: 低階事件:一些基本輸入和視窗操作等相關物件。 語意事件:使用者與GUI元件互動遭作所產生的相關事件。
22
Java的委託事件處理 低階事件: ComponentEvent:當隱藏、移動、顯示和調整元件尺寸時。
ContainerEvent:新增或刪除元件時。 FocusEvent:元件取得或失去焦點時,當使用TAB鍵和滑鼠按鍵按一下該物件,就可以取得焦點。 KeyEvent:當鍵盤按鍵按下、鬆開和輸入字元時。 MouseEvent:滑鼠在元件上按一下,拖拉、移動、進入、離開、按下、鬆開。 WindowEvent:視窗操作的開啟、關閉、縮小圖示化等操作。 PaintEvent:相關的繪圖操作。 InputEvent:這是KeyEvent與MouseEvent的父抽象類別。
23
Java的委託事件處理 語意事件: ActionEvent :當按下按鈕,選擇清單方塊選項,數入文字方塊時按下Enter
AdjustmentEvent:當移動捲動軸物件時。 ItemEvent:當選取核取方塊、選擇紐、下拉式清單方塊時。 TextEvent:輸入的文字內容改變時。
24
Java Applet與事件處理 Java Applet的GUI圖形介面可以新增【事件處理】,以便隨時準備處理各種事件。如 Mouse , Keyboard 和AWT所產生的事件。 滑鼠處理事件: Component(class)->MouseEvent->MouseListenerner->mouseClick(Method) or mousePressed or mouseReleased or mouseEntered or mouseExited ->Java Apple實作介面。 其中方法的參數為MouseEvent。 程式範例Ch16_6_1.java
25
Java Applet與事件處理 滑鼠拖拉處理事件:
Component(class)->MouseEvent->MouseMotionListener->mouseDragged (Method) or mouseMoved->Java Apple實作介面。 其中方法的參數為MouseEvent。 取得滑鼠座標的方法是繼承MouseEvent的物件方法。 Int getX() 取得座標x Int getY() 取得座標y 程式範例Ch16_6_2.java
26
Java Applet與事件處理 鍵盤事件處理:
Component(class)->KeyEvent->KeyListener->keyPressed(method) or keyReleased or keyTyped->Java Applet實作介面。 其中方法的參數為KeyEvent。 取得鍵盤鍵入的值的方法是繼承KeyEvent的物件方法。 Int getKeyCode() 取得鍵值。 KeyEvent類別定義按鍵的的常數,常用的方向鍵如下。 KeyEvent.VK_LEFT 方向鍵向左 KeyEvent.VK_REGHT 方向鍵向右 KeyEvent.VK_UP 方向鍵向上 KeyEvent.VK_DOWN 方向鍵向下 程式範例Ch16_6_3
27
Java Applet與事件處理 AWT的GUI元件產生的事件屬於【語意事件】,如List,Choice和Button元件所產生的事件。
Button,List,TextField,MenuItem(Class)->ActionEvent0>ActionListener->actionPerformed(Method)->Java Applet實作介面。 Choice,Checkbox,List,CheckMenuItem(class)->ItemEvent->ItemListener->itemStateChanged(Method)->Java Applet實作介面。 其中方法的參數分別為ActionEvent,ItemEvent。 因為actionPerformed方法可以同時處理【Botton】及【List】元件所產生的事件,所以需要getSource方法來取得【觸發事件】的【來源物件】 程式範例Ch16_6_4.java
28
Java Applet與事件處理 另外還有其他【語意事件】,TextField及TextArea。
TextField,TextArea(class)->TextEvent->TextListener->textValueChanged(Method)->Java Applet實作此介面。 其中方法的參視為TextEvent。 在處理字串變更時,可以使用getText方法取得使用者輸入的資料。 程式範例Ch16_6_5.java
29
Java Applet的音樂撥放 Java Applet不只可以顯示圖片,程式也可以撥放音樂。
目前支援的檔案格式有 au , aiff , wav , mid 及 rmf 。 在Applet類別中提供getAudioClip方法可以建立AudioClip物件來載入音樂檔案。 AudioClip audio = getAudioClip(detDocumentBase(),”abc.wav”) 在建立AudioClip物件,可以使用AudioClip介面的方法控制音樂的撥放。 void play() :撥放音樂 void loop() :重複撥放音樂 void stop():停止撥放音樂 程式範例Ch16_7.java
30
Finish !!! Thank you
Similar presentations