Java語言程序設(shè)計(jì)-v3-10_第1頁
Java語言程序設(shè)計(jì)-v3-10_第2頁
Java語言程序設(shè)計(jì)-v3-10_第3頁
Java語言程序設(shè)計(jì)-v3-10_第4頁
Java語言程序設(shè)計(jì)-v3-10_第5頁
已閱讀5頁,還剩41頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第十章事件處理遼寧機(jī)電職業(yè)技術(shù)學(xué)院信息工程系軟件教研室遲勇回顧簡述下面UI界面使用容器嵌套構(gòu)建的過程本章學(xué)習(xí)任務(wù)學(xué)習(xí)一個(gè)簡單的按鈕事件處理示例理解基于委托的事件處理機(jī)制了解Java中的各種事件處理類使用事件適配器類實(shí)現(xiàn)事件處理本章技能目標(biāo)了解事件處理類型及層次學(xué)習(xí)各種事件監(jiān)聽器理解事件適配器的使用意義預(yù)習(xí)檢查(1)--預(yù)習(xí)新單詞單詞釋義單詞釋義DelegationEventHandleActionAdapterItem預(yù)習(xí)檢查(2)從下面代碼中找出:事件監(jiān)聽器接口事件源監(jiān)聽器注冊監(jiān)聽器監(jiān)聽器接口中的方法事件類事件類的方法publicclassTextEventDemoextendsFrameimplementsTextListener{ TextFieldt1=newTextField(30); publicTextEventDemo(Stringtitle) { super(title); this.add(t1,"North"); t1.addTextListener(this);//為文本框t1注冊文本監(jiān)聽器

}publicvoidtextValueChanged(TextEvente){ if(e.getSource()==t1)//判斷是否在文本框上產(chǎn)生了文本事件

{ str=t1.getText(); }}}事件監(jiān)聽器接口事件源監(jiān)聽器注冊監(jiān)聽器監(jiān)聽器接口中的方法事件類事件類的方法事件處理-內(nèi)容目錄事件處理概述事件處理示例事件適配器10.1事件處理(EventHandle)概述10.1.1Java基于委托的事件處理模型10.1.2事件處理及相關(guān)概念10.1.3Java的事件處理類10.1.4Java的事件及其監(jiān)聽器接口10.1事件處理(EventHandle)概述10.1事件處理(EventHandle)概述如果想要實(shí)現(xiàn)用戶與組件的交互,就必須使用事件處理。例如,我們用鼠標(biāo)點(diǎn)擊按鈕,希望界面會(huì)得到一定的反應(yīng)。在這個(gè)過程中,用戶在按鈕上單擊鼠標(biāo),按鈕組件接收鼠標(biāo)動(dòng)作并對用戶的動(dòng)作做出響應(yīng),觸發(fā)組件的鼠標(biāo)單擊事件。事件在對象間的傳遞是則是以消息(Message)進(jìn)行傳輸。10.1.1Java基于委托的事件處理模型Java在事件處理的過程中,是圍繞著一個(gè)稱為“監(jiān)聽器”(Listener)的對象來進(jìn)行的,事件的接收、判斷和處理都是委托“監(jiān)聽器”來全權(quán)完成,這稱為“基于委托的事件處理模型”(DelegationEventModel)。

Java的事件處理過程是這樣的:程序中使用“監(jiān)聽器”對想要接收事件的組件進(jìn)行監(jiān)視,當(dāng)用戶動(dòng)作觸發(fā)事件時(shí),“監(jiān)聽器”會(huì)接收到它所監(jiān)聽組件上的事件,然后根據(jù)事件類型,自行決定該使用什么方法來處理。在整個(gè)事件處理過程中,“監(jiān)聽器”都是關(guān)鍵的核心。事件處理的相關(guān)概念

事件處理及相關(guān)概念大致有:事件、事件接口、監(jiān)聽器、注冊(添加)監(jiān)聽器、事件類、事件接口中的方法、事件類的方法。

事件是組件對用戶的動(dòng)作的響應(yīng)。而響應(yīng)用戶動(dòng)作并產(chǎn)生事件的組件就是事件源。如果組件有監(jiān)聽器監(jiān)聽,組件產(chǎn)生的事件就會(huì)以消息的形式傳遞給監(jiān)聽器。監(jiān)聽器根據(jù)監(jiān)聽到的事件類型,調(diào)用相應(yīng)的方法去執(zhí)行用戶的需求。而事件類和事件類的方法的應(yīng)用則在事件接口方法中體現(xiàn)。第9章示例9-9就是一個(gè)事件處理的例子。例10-1:簡單的事件處理示例importjava.awt.*;importjava.awt.event.*;//導(dǎo)入事件處理類所在的類包//類EventHandle實(shí)現(xiàn)了事件監(jiān)聽器接口publicclassEventHandleextendsFrameimplementsActionListener{ TextFieldt1=newTextField(20); Buttonb1=newButton("登錄");publicEventHandle(Stringtitle){ super(title); this.setLayout(newFlowLayout()); this.add(t1); this.add(b1); b1.addActionListener(this);//為按鈕b1注冊監(jiān)聽器this this.setSize(200,90); this.setVisible(true);}publicvoidactionPerformed(ActionEvente)//實(shí)現(xiàn)接口里的方法

{ if(e.getSource()==b1)//判斷事件源是否是按鈕b1 { t1.setText("大家好!"); }}publicstaticvoidmain(String[]args){ newEventHandle("事件處理簡單示例");}}【運(yùn)行結(jié)果】(顯示如圖所示的窗口,當(dāng)單擊“登錄”按鈕時(shí),文本框顯示字符串“大家好!”。)圖10-1Java基于委托的事件處理模型流程下面我們把例10-1涉及的相關(guān)概念再對比列出,參照圖10-1徹底掌握這些概念相關(guān)概念再對比概念相應(yīng)代碼段事件監(jiān)聽器接口ActionListener事件源b1監(jiān)聽器this注冊監(jiān)聽器addActionListener(this);監(jiān)聽器接口中的方法actionPerformed()事件類ActionEvent事件類的方法getSource()表10-1事件相關(guān)概念對照那么什么樣的對象有資格做“監(jiān)聽器”呢?;“監(jiān)聽器”對象的類需要實(shí)現(xiàn)指定的事件監(jiān)聽接口。一個(gè)監(jiān)聽器可以監(jiān)聽多個(gè)事件源,一個(gè)事件源也可以注冊多個(gè)監(jiān)聽器注冊監(jiān)聽器時(shí)使用addXXXlistener()方法,刪除時(shí)則使用removeXXXlistener()方法(例如刪除動(dòng)作事件監(jiān)聽器可以使用removeActionlistener方法);10.1.3

Java的事件處理類Java的事件一般包括兩種類型:用戶事件和系統(tǒng)事件。用戶事件:由用戶動(dòng)作引發(fā)的事件。例如,用戶操作鼠標(biāo),按下鍵盤鍵等;系統(tǒng)事件:由操作系統(tǒng)發(fā)出的事件。例如,窗口狀態(tài)變化時(shí)自動(dòng)刷新窗口內(nèi)容等。這里我們只探討用戶事件。圖10-2AWT包的事件處理類層次AWT組件事件都是由java.awt.AWTEvent類派生得到,它也是EventObject類的子類。AWT事件共有12種類型,如圖10-2所示10.1.4Java的事件及其監(jiān)聽器接口事件類別功能描述接口名接口中方法ActionEvent動(dòng)作事件ActionListeneractionPerformed(ActionEvnete)TextEvent文本事件TextListenertextValueChanged(TextEvente)AdjustementEvent調(diào)整事件AdjustmentListeneradjustmentValueChanged(AdjustmentEvente)ItemEvent項(xiàng)目事件ItemListeneritemStateChanged(ItemEvente)FocusEvent焦點(diǎn)事件FocusListenerfocusGained(FocusEvente)focusLost(FocusEvente)ContainerEvent容器事件ContainerListenercomponentAdded(ContainerEvente)componentRemoved(ContainerEvente)ComponentEvent組件事件ComponentListenercomponentHidden(ComponentEvente)componentMoved(ComponentEvente)componentResized(ComponentEvente)componentShown(ComponentEvente)AWT事件類共有10類,相應(yīng)監(jiān)聽器接口共有11個(gè)。它們的對應(yīng)關(guān)系及功能如表10-2。事件類別功能描述接口名接口中方法WindowEvent窗口事件WindowListenerwindowActived(WindowEvente)windowClosed(WindowEvente)windowClosing(WindowEvente)windowDectivated(WindowEvente)windowDeiconified(WindowEvente)windowIconfied(WindowEvente)windowOpened(WindwEvente)MouseEvent鼠標(biāo)事件MouseListenermouseClicked(MouseEvente)mouseEntered(MouseEvente)mouseExited(MouseEvente)mousePressed(MouseEvente)mouseReleased(MouseEvente)鼠標(biāo)移動(dòng)事件MouseMotionListenermouseDragged(MouseMotionEvente)mouseMoved(MouseMotionEvente)KeyEvent鍵盤事件KeyListenerkeyPressed(KeyEvente)keyReleased(KeyEvente)keyTyped(KeyEvente)表10-3部分事件類的常用方法事件類可產(chǎn)生事件的組件事件類的方法方法功能描述ActionEventButton,List,MenuItem,TextField等getActionCommand()返回與此動(dòng)作相關(guān)的命令字符串。TextEventTextArea,TextFieldparamString()返回標(biāo)識(shí)此文本事件的參數(shù)字符串。AdjustmentEventScrollbargetValue()getAdjustmentType()返回調(diào)整事件中的當(dāng)前值。返回導(dǎo)致值更改的調(diào)整類型。ItemEventList,Choice,Checkbox,CheckboxMenuItemgetItem()getStateChange()返回受事件影響的項(xiàng)。返回狀態(tài)更改的類型(選中或取消)。MouseEvent大部分組件getClickCount()getPoint()getX()getY()返回鼠標(biāo)單擊次數(shù)。返回鼠標(biāo)事件相對于源組件的x、y位置。返回鼠標(biāo)事件相對于源組件的水平x坐標(biāo)。返回鼠標(biāo)事件相對于源組件的垂直y坐標(biāo)。KeyEvent大部分組件getKeyChar()getKeyCode()返回與按鍵相關(guān)聯(lián)的字符。返回與按鍵相關(guān)聯(lián)的鍵整數(shù)值。事件類的方法:包括從父類AWTEvent類中繼承的方法和事件類本身特有的方法。事件類的靜態(tài)整形成員屬性每種事件類都有一些從父類AWTEvent類中繼承下來的或是本身特有的靜態(tài)整形成員屬性,主要是一些描述當(dāng)前組件的狀態(tài)的值。如KeyEvent.VK_LEFT屬性代表鍵盤“左箭頭鍵”。部分成員屬性會(huì)在后面的“事件處理示例”一節(jié)中提及。事件處理-內(nèi)容目錄事件處理概述事件處理示例事件適配器10.2事件處理示例10.2.1動(dòng)作事件與項(xiàng)目事件10.2.2文本事件10.2.3鍵盤事件10.2.4鼠標(biāo)事件10.2.5窗口事件10.2事件處理示例10.2.1動(dòng)作事件與項(xiàng)目事件動(dòng)作事件(ActionEvent)是由用戶動(dòng)作造成組件的動(dòng)作(比如按下按鈕)產(chǎn)生的,(注意:要使鍵盤在Button組件上觸發(fā)ActionEvent,需使用空格鍵)。項(xiàng)目事件(ItemEvent)是由用戶在具備項(xiàng)目選擇能力的組件(比如列表框,選擇框等)上觸發(fā)。例10-2:ActionEvent與ItemEvent示例(要求:從列表框中選擇項(xiàng)目,單擊按鈕時(shí),選中的項(xiàng)目顯示在文本框中)其中ActionEvent由ActionListener接口的actionPerformed()方法處理;ItemEvent由ItemListener接口的itemStateChanged()方法處理。MultiListener.java程序代碼importjava.awt.*;importjava.awt.event.*;//類MultiListener實(shí)現(xiàn)了兩個(gè)接口publicclassMultiListenerextendsFrameimplementsActionListener,ItemListener{Listlist=newList(4,true);TextFieldt1=newTextField(20);Buttonb1=newButton("顯示");Panelp=newPanel();Strings[]={“籃球”,“足球”,“乒乓球”,“羽毛球”};//初始化愛好內(nèi)容

intnum=0;//選擇愛好的個(gè)數(shù)publicMultiListener(Stringtitle){ super(title); for(inti=0;i<4;i++)//向列表框中添加愛好 list.add(s[i]); p.add(newLabel("您選擇的愛好是:")); p.add(t1); p.add(b1); this.add(list,"Center"); this.add(p,"South"); b1.addActionListener(this);//為按鈕b1注冊動(dòng)作監(jiān)聽器 list.addItemListener(this);//為列表框list注冊項(xiàng)目監(jiān)聽器 pack();//緊湊窗體 this.setVisible(true);}publicvoidactionPerformed(ActionEvente){ if(e.getSource()==b1)//判斷是否單擊了按鈕b1 { Stringstr[]=list.getSelectedItems();//獲取列表框中所有選擇的項(xiàng)目,存入字符串?dāng)?shù)組str中 Stringstr_show="";//將要顯示在文本框中的字符串 for(inti=0;i<str.length;i++) str_show=str_show+str[i]+",";//將所有愛好字符串連接到str_show字符串 t1.setText(str_show);//在文本框t1中顯示愛好字符串

} }publicvoiditemStateChanged(ItemEvente){ if(e.getStateChange()==1)//判斷列表框中是否有項(xiàng)目被選擇 { num++;//愛好數(shù)加1 t1.setText("您選中了"+num+"個(gè)愛好!"); } if(e.getStateChange()==ItemEvent.DESELECTED)//判斷列表框中是否有項(xiàng)目被取消選擇 { num--;//愛好數(shù)減1 t1.setText("您取消了一個(gè)愛好!"); }}publicstaticvoidmain(String[]args){ newMultiListener("多接口示例!");}}運(yùn)行結(jié)果【運(yùn)行結(jié)果】(顯示如圖1所示的窗口,當(dāng)選擇列表框中的愛好時(shí),文本框顯示你選擇的愛好的個(gè)數(shù)。)(圖1)(當(dāng)單擊“顯示”按鈕時(shí),顯示如圖2所示的窗口,文本框顯示你選擇的愛好。)(圖2)10.2.2文本事件文本組件(如TextField,TextArea)在文本內(nèi)容發(fā)生改變時(shí)(如鍵入,刪除字符時(shí)),會(huì)產(chǎn)生TextEvent類型事件。處理TextEvent的接口是TextListener,接口中的方法textValueChanged(TextEvente)importjava.awt.*;importjava.awt.event.*;importjava.util.StringTokenizer;//StringTokenizer類在util包中publicclassTextEventDemoextendsFrameimplementsTextListener{ TextFieldt1=newTextField(30); Labellab=newLabel(""); Stringstr=""; StringTokenizerst; publicTextEventDemo(Stringtitle) {super(title); this.add(t1,"North"); this.add(lab,"South"); t1.addTextListener(this);//為文本框t1注冊文本監(jiān)聽器

this.pack();//緊湊窗口

this.setVisible(true); }publicvoidtextValueChanged(TextEvente){ if(e.getSource()==t1)//判斷是否在文本框上產(chǎn)生了文本事件

{ str=t1.getText(); st=newStringTokenizer(str,"'.?");//以空格、單引號(hào)、句號(hào)、問號(hào)做為分隔符分析str字符串有多少字符串子段

intnum=st.countTokens();//計(jì)算句子中單詞的個(gè)數(shù)

lab.setText("現(xiàn)在單詞個(gè)數(shù):"+num+"個(gè)"); this.add(lab,"South"); }}publicstaticvoidmain(String[]args){ newTextEventDemo("實(shí)時(shí)單詞計(jì)算");}}運(yùn)行結(jié)果】(顯示如圖所示的窗口,當(dāng)在文本框中輸入句子時(shí),標(biāo)簽中會(huì)顯示句子中單詞的個(gè)數(shù)。)10.2.3鍵盤事件當(dāng)在事件源組件上按下鍵盤鍵時(shí)會(huì)發(fā)生KeyEvent。在KeyListener接口中有三個(gè)方法:keyPressed()、keyTyped()、keyReleased()。keyPressed()方法處理鍵盤鍵按下,keyReleased()方法處理鍵盤鍵釋放,keyTyped()方法是keyPressed()方法與keyReleased()方法的組合,當(dāng)鍵盤鍵按下后又釋放就會(huì)調(diào)用keyTyped()方法。Java如何判斷是那個(gè)鍵被按下呢?表10-4列舉了部分KeyEvent類中定義的靜態(tài)常量(注意:表中常量都是publicstaticfinalint型)。表10-4KeyEvent類中的靜態(tài)常量鍵碼常量對應(yīng)功能鍵對應(yīng)整形常量VK_F1~VK_F12功能鍵F1-F12112~123VK_LEFT向左箭頭鍵37VK_UP向上箭頭鍵38VK_RIGHT向右箭頭鍵39VK_DOWN向下箭頭鍵40VK_KP_LEFT數(shù)字鍵盤向左方向鍵226VK_HOMEHOME鍵36VK_ENTER回車鍵10VK_TAB制表位鍵9VK_BACK_SPACE退格鍵8VK_SHIFTShift鍵16VK_CONTROLCtrl鍵17VK_ALTAlt鍵18VK_SPACE空格鍵32VK_0~VK_9數(shù)字0~9鍵48~57VK_A~VK_Z字母a~z鍵65~90表10-5KeyEvent類中的方法方法功能描述getKeyChar()返回與此事件中的鍵相關(guān)聯(lián)的字符。getKeyCode()返回與此事件中的鍵相關(guān)聯(lián)的整數(shù)keyCode。getKeyModifiersText(intmodifiers)返回描述組合鍵的String,如“Shift”或“Ctrl+Shift”。getKeyText(intkeyCode)返回描述keyCode的String,如“F1”或“A”。例10-4:KeyEvent中的按鍵示例(要求在窗體中按下鍵盤鍵時(shí),文本框中會(huì)顯示響應(yīng)的鍵名)importjava.awt.*;importjava.awt.event.*;publicclassKeyEventDemoextendsFrameimplementsKeyListener{ TextFieldt1=newTextField(25); Labellab=newLabel("在窗口中按下鍵盤鍵,會(huì)顯示相應(yīng)鍵碼"); Panelp=newPanel();publicvoidkeyPressed(KeyEvente){ t1.setText(""); t1.setText(e.getKeyText(e.getKeyCode()));//獲取并顯示按鍵信息}publicvoidkeyTyped(KeyEvente){}//必須重寫publicvoidkeyReleased(KeyEvente){}//必須重寫publicKeyEventDemo(Stringtitle){ super(title); t1.setEditable(false);//設(shè)置文本框t1為不可編輯 p.add(lab); p.add(t1); add(p); this.addKeyListener(this);//為窗體注冊監(jiān)聽器 setSize(220,100); setVisible(true); this.requestFocus(true);//將焦點(diǎn)設(shè)置在窗體上,此句為必須}publicstaticvoidmain(String[]args){ newKeyEventDemo("KeyEvent中的按鍵示例");}}運(yùn)行結(jié)果【運(yùn)行結(jié)果】(顯示如圖所示的窗口,當(dāng)焦點(diǎn)在當(dāng)前窗口上,并按下鍵盤鍵Alt時(shí),文本框顯示你按鍵的鍵名字符串“Alt”。)10.2.4鼠標(biāo)事件當(dāng)鼠標(biāo)按下、釋放、進(jìn)入、離開組件,或在組件上方移過、拖曳時(shí)都會(huì)發(fā)生鼠標(biāo)事件。鼠標(biāo)事件大致分為兩類:普通鼠標(biāo)事件(鼠標(biāo)按下、釋放、進(jìn)入、離開)和鼠標(biāo)拖動(dòng)事件(鼠標(biāo)移過、拖曳)。分別由兩個(gè)接口處理,其中MouseListener接口處理普通鼠標(biāo)事件(接口中包含5個(gè)方法),MouseMotionListener接口處理鼠標(biāo)拖動(dòng)事件(接口中包含2個(gè)方法),參考表10-2。例10-6:MouseListener接口示例(要求:可以記錄窗口上鼠標(biāo)按下、釋放、進(jìn)入、離開和單、雙擊的位置)importjava.awt.*;importjava.awt.event.*;publicclassMouseListenerDemoextendsFrameimplementsMouseListener{ Labelmessage=newLabel("這里顯示鼠標(biāo)動(dòng)作");publicMouseListenerDemo(Stringtitle){ super(title); this.add(message,"North"); this.addMouseListener(this); this.setSize(200,150); this.setVisible(true);}例10-6:MouseListener接口示例publicvoidmousePressed(MouseEvente){//重寫接口的方法

message.setText("鼠標(biāo)被按下,位置在:"+e.getX()+","+e.getY()); }publicvoidmouseReleased(MouseEvente){ message.setText("鼠標(biāo)被釋放,位置在:"+e.getX()+","+e.getY()); }publicvoidmouseEntered(MouseEvente){ message.setText("鼠標(biāo)已進(jìn)入,位置在:"+e.getX()+","+e.getY()); }publicvoidmouseExited(MouseEvente){ message.setText("鼠標(biāo)已退出,位置在:"+e.getX()+","+e.getY()); }publicvoidmouseClicked(MouseEvente){ if(e.getClickCount()==1){//判斷鼠標(biāo)擊鍵的次數(shù)是否為單擊

message.setText("鼠標(biāo)單擊,位置在:"+e.getX()+","+e.getY()); } if(e.getClickCount()==2){//判斷鼠標(biāo)擊鍵的次數(shù)是否為雙擊

message.setText("鼠標(biāo)雙擊,位置在:"+e.getX()+","+e.getY()); } }publicstaticvoidmain(String[]args){ newMouseListenerDemo("鼠標(biāo)MouseListener接口示例"); }}運(yùn)行結(jié)果【運(yùn)行結(jié)果】(顯示窗口如圖所示,當(dāng)在窗體中鼠標(biāo)鍵按下、釋放、進(jìn)入、離開和單、雙擊時(shí),會(huì)顯示鼠標(biāo)動(dòng)作的發(fā)生位置。)例10-7:MouseMotionListener接口示例importjava.awt.*;importjava.awt.event.*;publicclassMouseMotionListenerDemoextendsFrameimplementsMouseMotionListener{Buttonb1=newButton("Movehere!");publicMouseMotionListenerDemo(Stringtitle){ super(title); this.setLayout(newFlowLayout()); this.add(b1); b1.addMouseMotionListener(this);//為按鈕注冊監(jiān)聽器 this.addMouseMotionListener(this);//為窗體注冊監(jiān)聽器 this.setSize(200,100); this.setVisible(true);}publicvoidmouseMoved(MouseEvente){//重寫接口方法 /*為按鈕b1設(shè)置手型鼠標(biāo)光標(biāo)*/ b1.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));}publicvoidmouseDragged(MouseEvente){//重寫接口方法 /*為當(dāng)前窗體設(shè)置等待型鼠標(biāo)光標(biāo)*/ this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));}publicstaticvoidmain(String[]args){ newMouseMotionListenerDemo("鼠標(biāo)MouseMotionListener接口示例");}}運(yùn)行結(jié)果【運(yùn)行結(jié)果】(當(dāng)鼠標(biāo)經(jīng)過窗體中的按鈕上方時(shí),顯示窗口如下圖所示)(當(dāng)鼠標(biāo)在窗體中拖曳時(shí),顯示窗口如下圖所示)10.2.5窗口事件窗體做為GUI界面的頂級容器,可以產(chǎn)生打開、關(guān)閉、激活、圖標(biāo)化等事件,在WindowListener接口中包含7個(gè)方法,見表10-2表10-5詳細(xì)介紹了這7個(gè)方法的功能。方法功能描述windowOpened(WindwEvente)窗體首次打開時(shí)調(diào)用windowClosed(WindowEvente)窗體調(diào)用dispose而關(guān)閉時(shí)調(diào)用windowActived(WindowEvente)將窗體設(shè)置為活動(dòng)窗體(焦點(diǎn)在此窗體)時(shí)調(diào)用windowDectivated(WindowEvente)將窗體設(shè)置為非活動(dòng)窗體(焦點(diǎn)不在此窗體)時(shí)調(diào)用windowIconfied(WindowEvente)窗體從正常狀態(tài)變?yōu)樽钚』瘓D標(biāo)狀態(tài)時(shí)調(diào)用windowDeiconified(WindowEvente)窗體從正常狀態(tài)變?yōu)樽钚』瘓D標(biāo)狀態(tài)時(shí)調(diào)用windowClosing(WindowEvente)試圖從窗體的系統(tǒng)菜單中關(guān)閉窗口時(shí)調(diào)用例10-8:WindowListener接口示例importjava.awt.*;importjava.awt.event.*;publicclassWindowListenerDemoextendsFrameimplementsWindowListener,ActionListener{TextAreatxtMsg=newTextArea(6,30);ButtonbtnClose=newButton("關(guān)閉窗口");WindowListenerDemo(Stringtitle){super(title);add(txtMsg,"Center");add(btnClose,"South");btnClose.addActionListener(this);//注冊Action事件監(jiān)聽器addWindowListener(this);//注冊Window事件監(jiān)聽器pack();setVisible(true);}publicvoidactionPerformed(ActionEvente)//按鈕事件處理方法{System.exit(0);//終止JVMthis.dispose();//釋放窗體占用的資源}//以下7個(gè)方法為處理WindowListener中的方法publicvoidwindowOpened(WindowEvente)//窗口打開時(shí)執(zhí)行{txtMsg.append("您已經(jīng)打開了窗體!"+"\n");}publicvoidwindowClosed(WindowEvente){}//未使用publicvoidwindowIconified(WindowEvente){...}//窗口圖標(biāo)化時(shí)執(zhí)行

publicvoidwindowDeiconified(WindowEvente){...}//窗口恢復(fù)常規(guī)顯示時(shí)執(zhí)行publicvoidwindowActivated(WindowEvente){...}//窗口激活時(shí)執(zhí)行publicvoidwindowDeactivated(WindowEvente){...}//窗口處于非活動(dòng)狀態(tài)執(zhí)行

publicvoidwindowClosing(WindowEvente)//關(guān)閉窗口時(shí)執(zhí)行{System.exit(0);dispose();}publicstaticvoidmain(String[]args){newWindowListenerDemo("窗口事件應(yīng)用");}}運(yùn)行結(jié)果【運(yùn)行結(jié)果】(如下圖所示的窗口經(jīng)過了打開、失去焦點(diǎn)、圖標(biāo)化等操作)事件處理-內(nèi)容目錄事件處理概述事件處理示例事件適配器10.3事件適配器(EventAdapter)在很多應(yīng)用中,并不是事件接口中所有的方法都會(huì)被用戶使用,但是還要全

溫馨提示

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

評論

0/150

提交評論