欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java深入講解AWT實(shí)現(xiàn)事件處理流程

 更新時(shí)間:2022年04月29日 11:15:49   作者:LNORA  
AWT的事件處理是一種委派式事件處理方式:普通組件(事件源)將整個(gè)事件處理委托給特定的對(duì)象(事件監(jiān)聽器);當(dāng)該事件源發(fā)生指定的事件時(shí),就通知所委托的事件監(jiān)聽器,由事件監(jiān)聽器來(lái)處理這個(gè)事件

AWT的事件處理

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

  • 事件對(duì)象(Event):封裝了GUI組件上發(fā)生的特定事件(通常就是用戶的一次操作)。
  • 事件源(組件):事件發(fā)生的場(chǎng)所,通常就是產(chǎn)生事件的組件
  • 監(jiān)聽器(Listener):負(fù)責(zé)監(jiān)聽事件源上發(fā)生的事件,并對(duì)各種事件做出相應(yīng)處理的對(duì)象(對(duì)象中包含事件處理器)。
  • 事件處理器:監(jiān)聽器對(duì)象對(duì)接收的事件對(duì)象進(jìn)行相應(yīng)處理的辦法。

AWT中的事件繼承圖

 在程序中創(chuàng)建了一個(gè)實(shí)現(xiàn)WindowListener接口的事件監(jiān)聽器類MyWindowListener,當(dāng)通過addWindowListener()方法將窗口與監(jiān)聽器對(duì)象綁定后,單擊關(guān)閉按鈕,會(huì)觸發(fā)監(jiān)聽器對(duì)象的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);
         //給窗口注冊(cè)一個(gè)監(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é)果

事件適配器

為了解決生成的方法空實(shí)現(xiàn)的問題,jdk提供了一些適配器類,它們是監(jiān)聽器接口的默認(rèn)實(shí)現(xiàn)類,這些實(shí)現(xiàn)類中實(shí)現(xiàn)了接口中所有的方法,但是方法中沒有代碼,程序可以通過繼承適配器類來(lái)達(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);
        //給窗口注冊(cè)一個(gè)監(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)聽器接口都有對(duì)應(yīng)的適配器類,通過繼承適配器類來(lái)實(shí)現(xiàn)監(jiān)聽器接口時(shí),需要處理那些事件,就直接重寫該事件對(duì)應(yīng)的方法。

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

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

為窗口添加一個(gè)具有點(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()方法,在這個(gè)方法中以匿名內(nèi)部類的方法給按鈕注冊(cè)了一個(gè)鼠標(biāo)事件監(jiān)聽器,因?yàn)橹恍枰O(jiān)聽按鈕的點(diǎn)擊事件,使用了MouseAdapter適配器類,重寫了mouseClicked()方法,當(dāng)按鈕被點(diǎn)擊時(shí),會(huì)把單擊事件作為對(duì)象傳遞給事件監(jiān)聽器,做出退出程序的處理。

小結(jié)

以上就是對(duì)于AWT事件處理的簡(jiǎn)單概述,可以讓們明白在對(duì)鼠標(biāo)鍵盤進(jìn)行操作的過程中AWT事件是怎樣處理的。

到此這篇關(guān)于Java深入講解AWT實(shí)現(xiàn)事件處理流程的文章就介紹到這了,更多相關(guān)Java AWT事件處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論