版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年統(tǒng)編版七年級歷史下冊階段測試試卷含答案
- 2025年粵教滬科版七年級物理下冊階段測試試卷
- 二零二五版泥漿外運承包服務(wù)合同(含環(huán)保驗收標(biāo)準(zhǔn))4篇
- 二零二五版門衛(wèi)值班人員節(jié)假日值班合同4篇
- 塔吊工地施工環(huán)保監(jiān)測合同20252篇
- 二零二五年度影視配音拍攝合同范本3篇
- 二零二五版智能門窗系統(tǒng)研發(fā)與市場推廣服務(wù)合同2篇
- 二零二五年度美團(tuán)外賣外賣配送服務(wù)區(qū)域規(guī)劃及調(diào)整合同4篇
- 二零二五版牛肉連鎖超市配送服務(wù)合同樣本4篇
- 臨時教學(xué)輔助人員聘用合同2024校版版
- 2024年甘肅省武威市、嘉峪關(guān)市、臨夏州中考英語真題
- DL-T573-2021電力變壓器檢修導(dǎo)則
- 繪本《圖書館獅子》原文
- 安全使用公共WiFi網(wǎng)絡(luò)的方法
- 2023年管理學(xué)原理考試題庫附答案
- 【可行性報告】2023年電動自行車相關(guān)項目可行性研究報告
- 歐洲食品與飲料行業(yè)數(shù)據(jù)與趨勢
- 放療科室規(guī)章制度(二篇)
- 中高職貫通培養(yǎng)三二分段(中職階段)新能源汽車檢測與維修專業(yè)課程體系
- 浙江省安全員C證考試題庫及答案(推薦)
- 目視講義.的知識
評論
0/150
提交評論