您好,登錄后才能下訂單哦!
今天小編給大家分享一下Java AWT實現事件處理流程是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
事件處理主要是為了響應用戶的操作
事件對象(Event):封裝了GUI組件上發生的特定事件(通常就是用戶的一次操作)。
事件源(組件):事件發生的場所,通常就是產生事件的組件
監聽器(Listener):負責監聽事件源上發生的事件,并對各種事件做出相應處理的對象(對象中包含事件處理器)。
事件處理器:監聽器對象對接收的事件對象進行相應處理的辦法。
在程序中創建了一個實現WindowListener接口的事件監聽器類MyWindowListener,當通過addWindowListener()方法將窗口與監聽器對象綁定后,單擊關閉按鈕,會觸發監聽器對象的windowClosing()方法,將當前窗口隱藏并釋放,從而關閉了窗口。
代碼如下
package AWT; import java.awt.*; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; public class Example08 { public static void main(String[] args) { Frame f=new Frame("我的世界"); f.setSize(400,300); f.setLocation(300,200); f.setVisible(true); //給窗口注冊一個監聽器 MyWindowListener mw=new MyWindowListener(); f.addWindowListener(mw); } } class MyWindowListener implements WindowListener{ @Override public void windowOpened(WindowEvent e) { } @Override public void windowClosing(WindowEvent e) { Window window= e.getWindow(); window.setVisible(false); window.dispose(); } @Override public void windowClosed(WindowEvent e) { } @Override public void windowIconified(WindowEvent e) { } @Override public void windowDeiconified(WindowEvent e) { } @Override public void windowActivated(WindowEvent e) { } @Override public void windowDeactivated(WindowEvent e) { } }
結果
為了解決生成的方法空實現的問題,jdk提供了一些適配器類,它們是監聽器接口的默認實現類,這些實現類中實現了接口中所有的方法,但是方法中沒有代碼,程序可以通過繼承適配器類來達到實現監聽器接口的目的。
package AWT; import java.awt.*; import java.awt.Frame; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; public class Example08 { public static void main(String[] args) { Frame f=new Frame("我的世界"); f.setSize(400,300); f.setLocation(300,200); f.setVisible(true); //給窗口注冊一個監聽器 MyWindowListener mw=new MyWindowListener(); f.addWindowListener(mw); } } //繼承WindowAdapter類,重寫windowClosing()方法 class MyWindowListener1 extends WindowAdapter { @Override public void windowClosing(WindowEvent e) { Window window=(Window) e.getComponent(); window.dispose(); } }
由于MyWindowListener類繼承了適配器類WindowAdapter,由于實現的功能是關閉窗口,所以只需要重寫windowClosing()方法,幾乎所有的監聽器接口都有對應的適配器類,通過繼承適配器類來實現監聽器接口時,需要處理那些事件,就直接重寫該事件對應的方法。
用匿名內部類實現事件處理
上面的事件適配器中通過繼承適配器類對事件源對象實現了監聽,但是為了代碼的簡潔,可以使用匿名內部類來創建事件的監聽器對象,對所發生的事件進行處理。
為窗口添加一個具有點擊事件的按鈕
package AWT; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class NiMing { public static void main(String[] args) { Frame f=new Frame("我的世界"); f.setSize(400,300); f.setLocation(300,200); f.setVisible(true); Button btn=new Button("Exit"); f.add(btn); btn.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { System.exit(0); } }); } }
首先調用了btn的addMouseListner()方法,在這個方法中以匿名內部類的方法給按鈕注冊了一個鼠標事件監聽器,因為只需要監聽按鈕的點擊事件,使用了MouseAdapter適配器類,重寫了mouseClicked()方法,當按鈕被點擊時,會把單擊事件作為對象傳遞給事件監聽器,做出退出程序的處理。
以上就是“Java AWT實現事件處理流程是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。