Java程序設(shè)計中文6slide教案_第1頁
Java程序設(shè)計中文6slide教案_第2頁
Java程序設(shè)計中文6slide教案_第3頁
Java程序設(shè)計中文6slide教案_第4頁
Java程序設(shè)計中文6slide教案_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Chapter

16

事件驅(qū)動程序設(shè)計*1Objectives*2F

To

start

with

event-driven

programming

with

a

simple

examp

14.1).F

To

explain

the

concept

of

event-driven

programming

(§14.F

To

understand

events,

event

sources,

and

event

classes

(§F

To

declare

listener

classes

and

write

the

code

to

handle

ev14.3).F

To

register

listener

objects

in

the

source

object

(§11.3)F

To

understand

how

an

event

is

handled

(§14.3).F

To

write

programs

to

deal

with

ActionEvent

(§14.3).F

To

write

programs

to

deal

with

MouseEvent

(§14.4).F

To

write

programs

to

deal

with

KeyEvent

(§14.5).F

To

use

the

Timer

class

to

control

animations

(§14.6

Optio過程式vs.事件驅(qū)動編程*3F

過程式程序是按過程的順序執(zhí)行的。F在事件驅(qū)動程序中,當(dāng)發(fā)生一個事件時執(zhí)行相應(yīng)的代碼。Taste

of

Event-DrivenProgrammingSimpleEventDemoRun*4事件和事件源*5F

事件可定義為程序發(fā)生了某些事情的信號。外部用戶行為,例如移動鼠標(biāo)、點擊按鈕和敲擊鍵盤等,或內(nèi)部程序行為,例如定時器等都可以引發(fā)事件。程序可以選擇響應(yīng)或忽略事件。F

在其上觸發(fā)或發(fā)生事件的組件稱為源對象或源組件。Event

Classes一個事件是事件類的實例,事件類的根類是

java.util.EventObject。一些事件類的層次關(guān)系如下*6事件信息*7F

事件對象包含與事件相關(guān)的一切屬性??梢允褂肊ventObject類中的實例方法getSource()得事件的源對象.EventObject類的子類處理特定類型的事件。用戶行為、源對象和事件類型*8Source Event

TypeUser

Action

Object

GeneratedClick

a

buttonJButtonActionEventClick

a

check

boxJCheckBoxItemEvent,

ActionEventClick

a

radio

button

JRadioButtonJTextFieldItemEvent,

ActionEventActionEventPress

return

on

a

text

fieldSelect

a

new

item

JComboBoxWindow

opened,

closed,

etc.ItemEvent,

ActionEventWindow

WindowEventMouse

pressed,

released,

etc.Component

MouseEventKey

released,

pressed,

etc.

Component

KeyEvent注*9F所有的事件類除了ListSelectionEvent和ChangeEvent(在javax.swing.event中)都包括java.awt.event包中。AWT事件本來是為AWT組件設(shè)計的,但是許多Swing組件都會觸發(fā)它們。F如果一個組件可以觸發(fā)某個事件,那么這個組件的任意子類都可以觸發(fā)同類型的事件。注:委托處理模型源對象觸發(fā)一個事件,監(jiān)聽該事件的監(jiān)聽器處理該事件。*10源組件的內(nèi)部函數(shù)*11事件、監(jiān)聽接口和接口方法*12Listener

Interface

Listener

Methods

(Handlers)Event

ClassActionEventItemEventWindowEventActionListenerItemListenerWindowListeneractionPerformed(ActionEvent)itemStateChanged(ItemEvent)windowClosing(WindowEvent)windowOpened(WindowEvent)windowIconified(WindowEvent)windowDeiconified(WindowEvent)windowClosed(WindowEvent)windowActivated(WindowEvent)windowDeactivated(WindowEvent)ContainerEventContainerListenercomponentAdded(ContainerEvent)componentRemoved(ContainerEvent)MouseEvent

MouseListener

mousePressed(MouseEvent)mouseReleased(MouseEvent)mouseClicked(MouseEvent)mouseExited(MouseEvent)mouseEntered(MouseEvent)KeyEventKeyListenerkeyPressed(KeyEvent)keyReleased(KeyEvent)keyTypeed(KeyEvent)java.awt.event.ActionEvent*13Example:

First

Version

forControlCircle

(no

listeners)首先編寫程序,顯示一個圓在中央以及兩個按鈕在底部的用戶接口ControlCircle1Run*14Example:

Second

Version

forControlCircle

(with

listener

for

Enla編寫監(jiān)聽器類,來通過按鈕控制圓的半徑。ControlCircle2Run*15內(nèi)部類監(jiān)聽器*16內(nèi)部類是定義在另一個類的范圍內(nèi)的類,監(jiān)聽器類是專門設(shè)計用來為GUI組件創(chuàng)建監(jiān)聽器對象的,而監(jiān)聽器類是不能被其他應(yīng)用程序所共享,因此適合在框架內(nèi)定義為內(nèi)部類。內(nèi)部類*17Revising

SimpleEventDemoUsing

Inner

ClassesSimpleEventDemoInnerClassRun*18匿名內(nèi)部類可以使用匿名內(nèi)部類縮短內(nèi)部類監(jiān)聽器。匿名內(nèi)部類是沒有名字的內(nèi)部類。它一步完成聲明內(nèi)部類和創(chuàng)建一個該類的實例。new

SuperClassName/InterfaceName()

{//

Implement

or

override

methods

in

superclass

or

interfa//

Other

methods

if

necessary}*19匿名內(nèi)部類*20F

匿名內(nèi)部類必須是擴展父類或?qū)崿F(xiàn)接口的,但它不能有明確的extends或者implements語句。F匿名內(nèi)部類必須實現(xiàn)父類或接口中所有的抽象方法。F匿名內(nèi)部類總是使用父類的無參構(gòu)造方法來創(chuàng)建實例。Revising

SimpleEventDemoUsing

Anonymous

Inner

ClassesSimpleEventDemoAnonymousInnerClassRun*21Example:

Handling

SimpleAction

EventsF

Objective:在窗口中顯示OK和Cancel按鈕.當(dāng)某個按鈕被按下,在控制臺上會有相應(yīng)按鈕

被按下的提示信息。TestActionEventRun*22Example:處理窗口事件TestWindowEventRun*23F

Window類的任何一個子類都可能觸發(fā)下面的窗

口事件:打開窗口、正在關(guān)閉窗口、關(guān)閉窗口、激活窗口、變成非活動窗口、最小化窗口和還原窗口。JFrame是Window的子類,所以它可以觸

發(fā)WindowEvent監(jiān)聽器接口適配器AdapterDemoRun*24F實現(xiàn)接口必須實現(xiàn)接口所有方法,即使程序并不關(guān)注某些方法。當(dāng)接口方法很多時,會變得比較麻煩。為了方便起見,Java提供稱作方便適配器(convenience

adapter)的支持類,它提供監(jiān)聽接口中所有方法的默認(rèn)實現(xiàn),雖然只是空的方法體。Java為每個AWT監(jiān)聽接口提供了適配器。每個

XListener的適配器類名為XAdapter.MouseEvent*25Handling

Mouse

Events*26F

Java提供兩個處理鼠標(biāo)事件的監(jiān)聽接口,

MouseListenerand

MouseMotionListener,來處理鼠標(biāo)事件.F

MouseListener

接口可以監(jiān)聽鼠標(biāo)被按下、釋放、輸入、退出或點擊的動作.F

MouseMotionListener接口監(jiān)聽鼠標(biāo)拖動或移動的動作.Handling

Mouse

Events*27Example:

Moving

Message

UsingMouseObjective:在面板中顯示一條信息,可

以用鼠標(biāo)移動這條

信息,信息會隨著

鼠標(biāo)的拖動而移動,信息總是顯示在鼠標(biāo)指針處。MoveMessageDemoRun*28Handling

Keyboard

Events*29Java提供KeyListener

接口監(jiān)聽鍵盤事件。F

keyPressed(KeyEvent

e)Called

whena

key

is

pressed.F

keyReleased(KeyEvent

e)Called

whena

key

is

released.F

keyTyped(KeyEvent

e)Called

whena

key

is

pressed

and

thenreleased.The

KeyEvent

Class*30F

Methods:getKeyChar()methodgetKeyCode()

methodF

Keys:Home

VK_HOMEEnd

VK_ENDVK_PGUPVK_PGDNPage

UpPage

Downetc...The

KeyEvent

Class,

cont.*31Example:

Keyboard

Events

DemoObjective:顯示用戶輸入的字

符。用戶可以

使用箭頭鍵移

動字符,KeyEventDemoRun*32The

Timer

Class并非所有

溫馨提示

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

評論

0/150

提交評論