更新時間:2019-09-11 10:20:57 來源:動力節點 瀏覽2712次
今天講一下JavaGUI中的事件處理。
圖形用戶界面系統借助事件驅動模式處理所有用戶交互。用戶執行一個操作,如移動鼠標,單擊鼠標按鈕,按下鍵盤上的某個鍵,釋放鍵盤鍵等。所有這些操作都將生成某種類型的事件。在Java中,每一個執行的操作都是一個事件。
處理這些事件的方式取決于應用程序的類型。一些事件由“抽象窗口操作工具包(AWT)”或者執行這些應用程序的環境來處理。如瀏覽器或者Applet小程序。有一些事件需要調用此處理程序。
監聽器
事件處理模型是一個過程,即應用程序允許使用稱為監聽器的對象注冊到處理程序的過程。當發生適當的事件時,將自動通知這些注冊過監聽器,某個動作被觸發了。
事件監聽程序即監聽器監聽由對象發生的特定事件。這個過程將依次調用處理事件的方法,即事件處理程序。每一個事件監聽程序將提供了處理這些事件的方法。
簡單來說,監聽器是個接口,如果你想監聽組件的某一動作,比如鼠標點擊,按鈕按下這些事件,你就要實現鼠標監聽器,或者按鈕監聽器等這樣的接口,然后再把這個實現了接口的對象注冊到要監聽的組件上。
對按鈕事件的處理
只要鼠標在某個按鈕上單擊,就會生成一個事件。
看下面的例子
Buttonbutton=newButton("確定");
button.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
JOptionPane.showMessageDialog(null,"你點擊了按鈕");
}
});
Button是確定按鈕,我們調用Button的addActionListener方法給它添加了一個點擊事件監聽器。
AddActionListener方法接受一個參數,這個參數是一個ActionListener對象。由于ActionListener是個接口,因為要實現這個接口的類作為參數。ActionListener接口只有一個方法需要實現,actionPerformed(ActionEvente)這個方法將在按鈕按下的時候發生。將傳遞一個事件對象ActionEvent。
我們在這里用到了匿名類的寫法,即不使用對象引用,直接實例化一個類對象來實現ActionListener接口。一般實現事件處理用匿名類比較方便,大家可以熟悉一下這樣的寫法。
以上的代碼等同于:
Buttonbutton=newButton("確定");
MyActionListeneral=newMyActionListener();
button.addActionListener(al);
classMyActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
JOptionPane.showMessageDialog(null,"你點擊了按鈕");
}
}
鼠標事件
Java語言支持用戶通過鼠標與應用程序進行交互。程序可以檢測鼠標并對鼠標操作中發生的變化作出反應。。鼠標事件通過MouseListener接口處理,并通過如下方法對事件反應。
mouseClicked:點擊事件,當點擊和釋放鼠標按鈕時處理此事件。
mouseEntered:當鼠標進入一個組件時處理此事件。
mouseExitied:當鼠標離開組件時處理此事件。
mousePressed:當鼠標按下時處理此事件。
mouseReleased:當鼠標釋放時處理此事件。
例子,我們來寫個程序,當鼠標進入窗體時提示鼠標進入,離開時提示鼠標離開
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("你點擊了鼠標");
}
@Override
publicvoidmousePressed(MouseEvente){
label.setText("你按下了鼠標");
}
@Override
publicvoidmouseReleased(MouseEvente){
label.setText("你釋放了鼠標鍵");
}
@Override
publicvoidmouseEntered(MouseEvente){
label.setText("鼠標進入");
}
@Override
publicvoidmouseExited(MouseEvente){
label.setText("鼠標退出");
}
publicstaticvoidmain(String[]args){
MouseEventDemodemo=newMouseEventDemo();
demo.setVisible(true);
}
}
總結:
要理解AWT對于事件處理的機制
掌握常見的事件處理類
熟悉匿名類的寫法
以上就是動力Java培訓機構小編介紹的“Java零基礎入門編程:GUI事件處理”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習