編程語言java語言_第1頁
編程語言java語言_第2頁
編程語言java語言_第3頁
編程語言java語言_第4頁
編程語言java語言_第5頁
已閱讀5頁,還剩31頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第五章事件處理Java AWT事件模型工作機制5.1事件處理基礎一.事件源:能夠產生事件的對象都可以成為事件源。如文本框、按鈕等一個事件源是一個能夠注冊監聽器并且為監聽器發送消息的這樣一些對象二.監聽器:監聽器對象會接收事件源對象發送的消息,并對發生的事件作出反應。一個監聽器對象就是一個實現了專門的監聽器接口的類實例,該類必須實現接口中的方法。這些方法當事件發生時,被自動指行。5.2 注冊監聽器方法一.注冊監聽器 eventSourceObject.addEventListener( eventListenerObject)例:ActionListener listener=. JButton

2、 button=new JButton(“ok”); button.addActionListener(Listener); 二.監聽器接口的實現監聽器對象所屬的類必須實現與事件源相對應的接口(ActionListener),即必須 提供接口中的方法actionPerformed(ActionEvent event)的實現例:ButtonTest.java接口方法實現class Mylistener implements ActionListener. public void actionPerformed( ActionEvent event) . 三.選擇事件監聽器任何實現了ActionL

3、istener 接口的類都可以作為事件的監聽器,所以可以用已經存在的類作監聽器class ButtonPanel Extends JPanel implements ActionListener. public void actionPerformed(ActionEvent event). 設置監聽器yellowButton.addActionListener(this)blueButton. addActionListener(this)redButton. addActionListener(this)它們共享一個監聽器對象,此時需判斷事件源是哪個EventObject 類中的getSo

4、urce方法用來捕獲發生事件的事件源捕獲事件源Object source=event.getSource();然后在actionPerformed()中進行判斷:if(source=yellowButton).else if(source=blueButton).else if(source=redButton).例:SelectThis.java四.用匿名類簡化程序在例ButtonTest.java中,每個按鈕需要同樣的處理: 1.使用字符串構造按鈕 2.把按鈕添加到面板 3.用適當的顏色構造一個監聽器 4.注冊動作監聽器設計一個方法用來構造按鈕:void makeButton(String

5、 name ,color bcolor)JButton button=new JButton(name); add(button); Coloraction act=new Coloraction(bcolor);button.addActionListener(act);ButtonPanel構造器變為:makeButton(“yellow”,Color.yellow);makeButton(“blue”,Color.blue);makeButton(“red”,Color.red);進一步簡化,把ColorAction改寫成匿名類void makeButton(String name ,c

6、olor bcolor)JButton button=new JButton(name); add(button)button.addActionListener(new ActionListener() public void actionPerformed( actionEvent event) setBackground(bcolor); repaint() );例:NonameTest.java 捕獲窗口事件與窗口相關的事件源是WindowEvent 捕獲窗口事件的監聽器:WindowListener listener=. frame.addWindowListener(listene

7、r);窗口監聽器必須實現WindowListener接口WindowListener接口中有七個方法,它們的名字是自解釋的WindowListener接口public interface windowListener void windowOpened(WindowEvent e); void windowClosing(WindowEvent e); void windowClosed(WindowEvent e); void windowIconified(WindowEvent e);void windowDeiconified(WindowEvent e);void windowAct

8、ivated(WindowEvent e);void windowdeactivated(WindowEvent e); 適配器類每個具有不止一個方法的AWT監聽器接口都有一個實現了它的所有方法,但卻不做任何工作的適配器類。例:WindowAdapter類適配器類動態地滿足了Java 中實現監視器類的技術要求通過擴展適配器類來實現需要的動作擴展WindowAdapter類擴展WindowAdapter類,繼承六個空方法,重載WindowClosing():class Terminator extends WindowAdapterpublic void windowClosing(Window

9、Event e) System.exit(0); 注冊事件監聽器WindoeListener listener=new Terminator();frame.addWindowListener(listener);只要框架產生一個窗口事件,該事件就會傳遞給監聽器對象上面語句也可簡化為:frame.addWindowListener(new Terminator(); 用匿名類簡化frame.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ) AWT事件層

10、次圖AWT事件類的繼承關系AWT事件類型ActionEvent ItemAdjustmentEvent KeyEventomponentEvent MouseEventContainerEvent TextEventFocusEvent WindowEventjava.awt.event包中監聽器接口ActionListener KeyListenerAdjustmentListener MouseListenerComponentListener TextListenerFocusListener WindowListenerContainerListener ItemListenerMou

11、seMotionListener適配器ComponentAdapterContainerAdapterFocusAdapterKeyAdapterMouseAdapterMouseMotionAdapterWindowAdapter總結一個對某一個事件感興趣的類必須實現一個監聽器接口該類要在事件源中注冊自己當事件發生時,該類會收到事件對象,然后它可以根據事件做出相應的處理AWT中的事件分類AWT明確區分兩種事件:語義事件和低級事件語義事件:用于表達用戶動作的事件。如:點擊按鈕低級事件:把語義事件變為可能。如:對于一個按鈕點擊來說,它包括鼠標按下、鼠標移動和鼠標彈起低級事件語義事件語義事件Act

12、ionEvent ItemEventAdjustmentEvent TextEvent低級事件ComponentEvent MouseEventContainerEvent FocusEvent WindowEvent KeyEvent使用MouseListner接口處理鼠標事件鼠標事件有5種:按下鼠標釋放鼠標擊鼠標鍵鼠標進入鼠標退出鼠標事件返回值鼠標事件的類型是MOuseEvent 當發生鼠標事件時:MouseEvent類自動創建一個事件對象,以及事件發生位置的x和y坐標,作為事件返回值MouseEvent類中的重要方法getX(),getY()坐標位置getModifiers()左或右鍵g

13、etClickCount()被點擊次數事件源獲得監視器的方法:addMouseListener處理事件源發生的事件接口是:MouseListenerMouseListener接口中方法MousePressed(MouseEvent)MouseReleased(MouseEvent)MouseEntered(MouseEvent)MouseExited(MouseEvent)Mouseclicked(MouseEvent)使用MOuseMotionListener接口處理鼠標事件發生的事件:拖動鼠標、鼠標移動鼠標事件的類型是MoseEvent獲得監視器的方法:addMouseMotionList

14、ener 事件的接口是:MouseMotionListenerMouseMotionListener接口中方法mouseDragged(MouseEvent)mouseMoved(MouseEvent)例:鼠標事件例MouseTest例:容器上的鼠標事件例例:組件上的鼠標事件例鍵盤事件鍵盤事件:按下KEYPRESSED釋放KEY-RELEASE敲擊KEY-keyType虛擬鍵代碼:VK鍵名例如:VKA代表A鍵VK0代表0鍵 KeyEvent常用方法char getKeyEvent()返回鍵入字符int getKeycode()返回虛擬代碼boolean isActionKey()是“動作”鍵,返回true.動作鍵如下:HOME、END、UP、F1F12、PAUSE、ENTER.static String getKeyModifiersText(int modifiers)返回描述修飾鍵的字符串InputEvent常用方法int getModifiers()返回一個整數,它的個位說明了SHIFT、CONTROL、ALT狀態boolean isAl

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論