更新時間:2019-09-11 10:20:57 來源:動力節(jié)點(diǎn) 瀏覽3080次
今天講一下JavaGUI中的事件處理。
圖形用戶界面系統(tǒng)借助事件驅(qū)動模式處理所有用戶交互。用戶執(zhí)行一個操作,如移動鼠標(biāo),單擊鼠標(biāo)按鈕,按下鍵盤上的某個鍵,釋放鍵盤鍵等。所有這些操作都將生成某種類型的事件。在Java中,每一個執(zhí)行的操作都是一個事件。
處理這些事件的方式取決于應(yīng)用程序的類型。一些事件由“抽象窗口操作工具包(AWT)”或者執(zhí)行這些應(yīng)用程序的環(huán)境來處理。如瀏覽器或者Applet小程序。有一些事件需要調(diào)用此處理程序。
監(jiān)聽器
事件處理模型是一個過程,即應(yīng)用程序允許使用稱為監(jiān)聽器的對象注冊到處理程序的過程。當(dāng)發(fā)生適當(dāng)?shù)氖录r,將自動通知這些注冊過監(jiān)聽器,某個動作被觸發(fā)了。

事件監(jiān)聽程序即監(jiān)聽器監(jiān)聽由對象發(fā)生的特定事件。這個過程將依次調(diào)用處理事件的方法,即事件處理程序。每一個事件監(jiān)聽程序?qū)⑻峁┝颂幚磉@些事件的方法。
簡單來說,監(jiān)聽器是個接口,如果你想監(jiān)聽組件的某一動作,比如鼠標(biāo)點(diǎn)擊,按鈕按下這些事件,你就要實(shí)現(xiàn)鼠標(biāo)監(jiān)聽器,或者按鈕監(jiān)聽器等這樣的接口,然后再把這個實(shí)現(xiàn)了接口的對象注冊到要監(jiān)聽的組件上。
對按鈕事件的處理
只要鼠標(biāo)在某個按鈕上單擊,就會生成一個事件。
看下面的例子
Buttonbutton=newButton("確定");
button.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
JOptionPane.showMessageDialog(null,"你點(diǎn)擊了按鈕");
}
});
Button是確定按鈕,我們調(diào)用Button的addActionListener方法給它添加了一個點(diǎn)擊事件監(jiān)聽器。
AddActionListener方法接受一個參數(shù),這個參數(shù)是一個ActionListener對象。由于ActionListener是個接口,因?yàn)橐獙?shí)現(xiàn)這個接口的類作為參數(shù)。ActionListener接口只有一個方法需要實(shí)現(xiàn),actionPerformed(ActionEvente)這個方法將在按鈕按下的時候發(fā)生。將傳遞一個事件對象ActionEvent。
我們在這里用到了匿名類的寫法,即不使用對象引用,直接實(shí)例化一個類對象來實(shí)現(xiàn)ActionListener接口。一般實(shí)現(xiàn)事件處理用匿名類比較方便,大家可以熟悉一下這樣的寫法。
以上的代碼等同于:
Buttonbutton=newButton("確定");
MyActionListeneral=newMyActionListener();
button.addActionListener(al);
classMyActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
JOptionPane.showMessageDialog(null,"你點(diǎn)擊了按鈕");
}
}
鼠標(biāo)事件
Java語言支持用戶通過鼠標(biāo)與應(yīng)用程序進(jìn)行交互。程序可以檢測鼠標(biāo)并對鼠標(biāo)操作中發(fā)生的變化作出反應(yīng)。。鼠標(biāo)事件通過MouseListener接口處理,并通過如下方法對事件反應(yīng)。
mouseClicked:點(diǎn)擊事件,當(dāng)點(diǎn)擊和釋放鼠標(biāo)按鈕時處理此事件。
mouseEntered:當(dāng)鼠標(biāo)進(jìn)入一個組件時處理此事件。
mouseExitied:當(dāng)鼠標(biāo)離開組件時處理此事件。
mousePressed:當(dāng)鼠標(biāo)按下時處理此事件。
mouseReleased:當(dāng)鼠標(biāo)釋放時處理此事件。
例子,我們來寫個程序,當(dāng)鼠標(biāo)進(jìn)入窗體時提示鼠標(biāo)進(jìn)入,離開時提示鼠標(biāo)離開
publicclassMouseEventDemoextendsFrameimplementsMouseListener{
privatePanelpanel=newPanel();
privateLabellabel;
publicMouseEventDemo(){
setBounds(100,100,300,300);
add(panel);
label=newLabel("Newlabel");
panel.add(label);
panel.addMouseListener(this);
}
privatestaticfinallongserialVersionUID=5563848995118514763L;
@Override
publicvoidmouseClicked(MouseEvente){
label.setText("你點(diǎn)擊了鼠標(biāo)");
}
@Override
publicvoidmousePressed(MouseEvente){
label.setText("你按下了鼠標(biāo)");
}
@Override
publicvoidmouseReleased(MouseEvente){
label.setText("你釋放了鼠標(biāo)鍵");
}
@Override
publicvoidmouseEntered(MouseEvente){
label.setText("鼠標(biāo)進(jìn)入");
}
@Override
publicvoidmouseExited(MouseEvente){
label.setText("鼠標(biāo)退出");
}
publicstaticvoidmain(String[]args){
MouseEventDemodemo=newMouseEventDemo();
demo.setVisible(true);
}
}

總結(jié):
要理解AWT對于事件處理的機(jī)制
掌握常見的事件處理類
熟悉匿名類的寫法
以上就是動力Java培訓(xùn)機(jī)構(gòu)小編介紹的“Java零基礎(chǔ)入門編程:GUI事件處理”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。
相關(guān)閱讀

初級 202925

初級 203221

初級 202629

初級 203743