计算机 外文翻译 外文文献 英文文献 事X件处理基础Word文档格式.docx
- 文档编号:19195590
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:18
- 大小:73.11KB
计算机 外文翻译 外文文献 英文文献 事X件处理基础Word文档格式.docx
《计算机 外文翻译 外文文献 英文文献 事X件处理基础Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机 外文翻译 外文文献 英文文献 事X件处理基础Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
Asonewouldexpectinanobject-orientedlanguagelikeJava,theinformationabouttheeventisencapsulatedinaneventobject.InJava,alleventobjectsultimatelyderivefromtheclassjava.util.EventObject.Ofcourse,therearesubclassesforeacheventtype,suchasActionEventandWindowEvent.
Differenteventsourcescanproducedifferentkindsofevents.Forexample,abuttoncansendActionEventobjects,whereasawindowcansendWindowEventobjects.
Tosumup,here'
sanoverviewofhoweventhandlingintheAWTworks.
∙Alistenerobjectisaninstanceofaclassthatimplementsaspecialinterfacecalled(naturallyenough)alistenerinterface.
∙Aneventsourceisanobjectthatcanregisterlistenerobjectsandsendthemeventobjects.
∙Theeventsourcesendsouteventobjectstoallregisteredlistenerswhenthateventoccurs.
∙Thelistenerobjectswillthenusetheinformationintheeventobjecttodeterminetheirreactiontotheevent.
Youregisterthelistenerobjectwiththesourceobjectbyusinglinesofcodethatfollowthemodel
eventSourceObject.addEventListener(eventListenerObject);
Hereisanexample:
ActionListenerlistener=...;
JButtonbutton=newJButton("
Ok"
);
button.addActionListener(listener);
Nowthelistenerobjectisnotifiedwheneveran"
actionevent"
occursinthebutton.Forbuttons,asyoumightexpect,anactioneventisabuttonclick.
Codeliketheaboverequiresthattheclasstowhichthelistenerobjectbelongsimplementstheappropriateinterface(whichinthiscaseistheActionListenerinterface).AswithallinterfacesinJava,implementinganinterfacemeanssupplyingmethodswiththerightsignatures.ToimplementtheActionListenerinterface,thelistenerclassmusthaveamethodcalledactionPerformedthatreceivesanActionEventobjectasaparameter.
classMyListenerimplementsActionListener
{
...
publicvoidactionPerformed(ActionEventevent)
{
//reactiontobuttonclickgoeshere
}
}
Whenevertheuserclicksthebutton,theJButtonobjectcreatesanActionEventobjectandcallslistener.actionPerformed(event),passingthateventobject.Itispossibleformultipleobjectstobeaddedaslistenerstoaneventsourcesuchasabutton.Inthatcase,thebuttoncallstheactionPerformedmethodsofalllistenerswhenevertheuserclicksthebutton.
Figure8-1showstheinteractionbetweentheeventsource,eventlistener,andeventobject.
Figure8-1.Eventnotification
Example:
HandlingaButtonClick
Asawayofgettingcomfortablewiththeeventdelegationmodel,let'
sworkthroughalldetailsneededforthesimpleexampleofrespondingtoabuttonclick.Forthisexample,wewillwant
∙Apanelpopulatedwiththreebuttons;
and
∙Threelistenerobjectsthatareaddedasactionlistenerstothebuttons.
Withthisscenario,eachtimeauserclicksonanyofthebuttonsonthepanel,theassociatedlistenerobjectthenreceivesanActionEventthatindicatesabuttonclick.Inoursampleprogram,thelistenerobjectwillthenchangethebackgroundcolorofthepanel.
Beforewecanshowyoutheprogramthatlistenstobuttonclicks,wefirstneedtoexplainhowtocreatebuttonsandhowtoaddthemtoapanel.(FormoreonGUIelements,seeChapter9.)
Youcreateabuttonbyspecifyingalabelstring,anicon,orbothinthebuttonconstructor.Herearetwoexamples:
JButtonyellowButton=newJButton("
Yellow"
JButtonblueButton=newJButton(newImageIcon("
blue-ball.gif"
));
Addingbuttonstoapaneloccursthroughacalltoamethodnamed(quitemnemonically)add.Theaddmethodtakesasaparameterthespecificcomponenttobeaddedtothecontainer.Forexample,
classButtonPanelextendsJPanel
publicButtonPanel()
JButtonyellowButton=newJButton("
JButtonblueButton=newJButton("
Blue"
JButtonredButton=newJButton("
Red"
add(yellowButton);
add(blueButton);
add(redButton);
Figure8-2showstheresult.
Figure8-2.Apanelfilledwithbuttons
Nowthatyouknowhowtoaddbuttonstoapanel,you'
llneedtoaddcodethatletsthepanellistentothesebuttons.ThisrequiresclassesthatimplementtheActionListenerinterface,which,aswejustmentioned,hasonemethod:
actionPerformed,whosesignaturelookslikethis:
publicvoidactionPerformed(ActionEventevent)
NOTE:
TheActionListenerinterfaceweusedinthebuttonexampleisnotrestrictedtobuttonclicks.Itisusedinmanyseparatesituations:
∙Whenanitemisselectedfromalistboxwithadoubleclick;
∙Whenamenuitemisselected;
∙WhentheENTERkeyisclickedinatextfield;
∙WhenacertainamountoftimehaselapsedforaTimercomponent.
Youwillseemoredetailsinthischapterandthenext.
ThewaytousetheActionListenerinterfaceisthesameinallsituations:
theactionPerformedmethod(whichistheonlymethodinActionListener)takesanobjectoftypeActionEventasaparameter.Thiseventobjectgivesyouinformationabouttheeventthathappened.
Whenabuttonisclicked,thenwewanttosetthebackgroundcolorofthepaneltoaparticularcolor.Westorethedesiredcolorinourlistenerclass.
classColorActionimplementsActionListener
publicColorAction(Colorc)
backgroundColor=c;
//setpanelbackgroundcolor
privateColorbackgroundColor;
Wethenconstructoneobjectforeachcolorandsettheobjectsasthebuttonlisteners.
ColorActionyellowAction=newColorAction(Color.YELLOW);
ColorActionblueAction=newColorAction(Color.BLUE);
ColorActionredAction=newColorAction(Color.RED);
yellowButton.addActionListener(yellowAction);
blueButton.addActionListener(blueAction);
redButton.addActionListener(redAction);
Forexample,ifauserclicksonthebuttonmarked"
Yellow,"
thentheactionPerformedmethodoftheyellowActionobjectiscalled.ItsbackgroundColorinstancefieldissettoColor.YELLOW,anditcannowproceedtosetthepanel'
sbackgroundcolor.
Justoneissueremains.TheColorActionobjectdoesn'
thaveaccesstothepanelvariable.Youcansolvethisproblemintwoways.YoucanstorethepanelintheColorActionobjectandsetitintheColorActionconstructor.Or,moreconveniently,youcanmakeColorActionintoaninnerclassoftheButtonPanelclass.Itsmethodscanthenaccesstheouterpanelautomatically.(Formoreinformationoninnerclasses,seeChapter6.)
Wefollowthelatterapproach.HereishowyouplacetheColorActionclassinsidetheButtonPanelclass.
...
privateclassColorActionimplementsActionListener
setBackground(backgroundColor);
//i.e.,
outer.setBackground(...)
privateColorbackgroundColor;
LookcloselyattheactionPerformedmethod.TheColorActionclassdoesn'
thaveasetBackgroundmethod.ButtheouterButtonPanelclassdoes.ThemethodsareinvokedontheButtonPanelobjectthatconstructedtheinnerclassobjects.(NoteagainthatouterisnotakeywordintheJavaprogramminglanguage.Wejustuseitasanintuitivesymbolfortheinvisibleouterclassreferenceintheinnerclassobject.)
Thissituationisverycommon.Eventlistenerobjectsusuallyneedtocarryoutsomeactionthataffectsotherobjects.Youcanoftenstrategicallyplacethelistenerclassinsidetheclasswhosestatethelistenershouldmodify.
Becoming
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 外文翻译 外文文献 英文文献 事X件处理基础 外文 翻译 文献 英文 处理 基础