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

下載本文檔

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

文檔簡介

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

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

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

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

5、 name ,color bcolor)JButton button=new JButton(name); add(button); Coloraction act=new Coloraction(bcolor);button.addActionListener(act);ButtonPanel構造器變?yōu)椋簃akeButton(“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 捕獲窗口事件的監(jiān)聽器:WindowListener listener=. frame.addWindowListener(listene

7、r);窗口監(jiān)聽器必須實現(xiàn)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監(jiān)聽器接口都有一個實現(xiàn)了它的所有方法,但卻不做任何工作的適配器類。例:WindowAdapter類適配器類動態(tài)地滿足了Java 中實現(xiàn)監(jiān)視器類的技術要求通過擴展適配器類來實現(xiàn)需要的動作擴展WindowAdapter類擴展WindowAdapter類,繼承六個空方法,重載WindowClosing():class Terminator extends WindowAdapterpublic void windowClosing(Window

9、Event e) System.exit(0); 注冊事件監(jiān)聽器WindoeListener listener=new Terminator();frame.addWindowListener(listener);只要框架產(chǎn)生一個窗口事件,該事件就會傳遞給監(jiān)聽器對象上面語句也可簡化為: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包中監(jiān)聽器接口ActionListener KeyListenerAdjustmentListener MouseListenerComponentListener TextListenerFocusListener WindowListenerContainerListener ItemListenerMou

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

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

13、etClickCount()被點擊次數(shù)事件源獲得監(jiān)視器的方法:addMouseListener處理事件源發(fā)生的事件接口是:MouseListenerMouseListener接口中方法MousePressed(MouseEvent)MouseReleased(MouseEvent)MouseEntered(MouseEvent)MouseExited(MouseEvent)Mouseclicked(MouseEvent)使用MOuseMotionListener接口處理鼠標事件發(fā)生的事件:拖動鼠標、鼠標移動鼠標事件的類型是MoseEvent獲得監(jiān)視器的方法: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()返回一個整數(shù),它的個位說明了SHIFT、CONTROL、ALT狀態(tài)boolean isAl

溫馨提示

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

評論

0/150

提交評論