溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java AWT實(shí)現(xiàn)事件處理流程是什么

發(fā)布時間:2022-04-29 14:10:03 來源:億速云 閱讀:157 作者:iii 欄目:開發(fā)技術(shù)

今天小編給大家分享一下Java AWT實(shí)現(xiàn)事件處理流程是什么的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

    AWT的事件處理

    事件處理主要是為了響應(yīng)用戶的操作

    • 事件對象(Event):封裝了GUI組件上發(fā)生的特定事件(通常就是用戶的一次操作)。

    • 事件源(組件):事件發(fā)生的場所,通常就是產(chǎn)生事件的組件

    • 監(jiān)聽器(Listener):負(fù)責(zé)監(jiān)聽事件源上發(fā)生的事件,并對各種事件做出相應(yīng)處理的對象(對象中包含事件處理器)。

    • 事件處理器:監(jiān)聽器對象對接收的事件對象進(jìn)行相應(yīng)處理的辦法。

    AWT中的事件繼承圖

    Java AWT實(shí)現(xiàn)事件處理流程是什么

     在程序中創(chuàng)建了一個實(shí)現(xiàn)WindowListener接口的事件監(jiān)聽器類MyWindowListener,當(dāng)通過addWindowListener()方法將窗口與監(jiān)聽器對象綁定后,單擊關(guān)閉按鈕,會觸發(fā)監(jiān)聽器對象的windowClosing()方法,將當(dāng)前窗口隱藏并釋放,從而關(guān)閉了窗口。

    代碼如下

     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);
             //給窗口注冊一個監(jiān)聽器
             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) {
         }
     }

    結(jié)果

    Java AWT實(shí)現(xiàn)事件處理流程是什么

    事件適配器

    為了解決生成的方法空實(shí)現(xiàn)的問題,jdk提供了一些適配器類,它們是監(jiān)聽器接口的默認(rèn)實(shí)現(xiàn)類,這些實(shí)現(xiàn)類中實(shí)現(xiàn)了接口中所有的方法,但是方法中沒有代碼,程序可以通過繼承適配器類來達(dá)到實(shí)現(xiàn)監(jiān)聽器接口的目的。

     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);
            //給窗口注冊一個監(jiān)聽器
             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,由于實(shí)現(xiàn)的功能是關(guān)閉窗口,所以只需要重寫windowClosing()方法,幾乎所有的監(jiān)聽器接口都有對應(yīng)的適配器類,通過繼承適配器類來實(shí)現(xiàn)監(jiān)聽器接口時,需要處理那些事件,就直接重寫該事件對應(yīng)的方法。

    用匿名內(nèi)部類實(shí)現(xiàn)事件處理

    上面的事件適配器中通過繼承適配器類對事件源對象實(shí)現(xiàn)了監(jiān)聽,但是為了代碼的簡潔,可以使用匿名內(nèi)部類來創(chuàng)建事件的監(jiān)聽器對象,對所發(fā)生的事件進(jìn)行處理。

    為窗口添加一個具有點(diǎn)擊事件的按鈕

     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);
                 }
             });
         }
     }

    首先調(diào)用了btn的addMouseListner()方法,在這個方法中以匿名內(nèi)部類的方法給按鈕注冊了一個鼠標(biāo)事件監(jiān)聽器,因?yàn)橹恍枰O(jiān)聽按鈕的點(diǎn)擊事件,使用了MouseAdapter適配器類,重寫了mouseClicked()方法,當(dāng)按鈕被點(diǎn)擊時,會把單擊事件作為對象傳遞給事件監(jiān)聽器,做出退出程序的處理。

    以上就是“Java AWT實(shí)現(xiàn)事件處理流程是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI