亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java深入講解AWT實現事件處理流程

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

AWT的事件處理

事件處理主要是為了響應用戶的操作

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

AWT中的事件繼承圖

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

結果

事件適配器

為了解決生成的方法空實現的問題,jdk提供了一些適配器類,它們是監(jiā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,由于實現的功能是關閉窗口,所以只需要重寫windowClosing()方法,幾乎所有的監(jiān)聽器接口都有對應的適配器類,通過繼承適配器類來實現監(jiān)聽器接口時,需要處理那些事件,就直接重寫該事件對應的方法。

用匿名內部類實現事件處理

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

為窗口添加一個具有點擊事件的按鈕

 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()方法,在這個方法中以匿名內部類的方法給按鈕注冊了一個鼠標事件監(jiān)聽器,因為只需要監(jiān)聽按鈕的點擊事件,使用了MouseAdapter適配器類,重寫了mouseClicked()方法,當按鈕被點擊時,會把單擊事件作為對象傳遞給事件監(jiān)聽器,做出退出程序的處理。

小結

以上就是對于AWT事件處理的簡單概述,可以讓們明白在對鼠標鍵盤進行操作的過程中AWT事件是怎樣處理的。

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

您可能感興趣的文章:

相關文章

  • java操作elasticsearch詳細方法總結

    java操作elasticsearch詳細方法總結

    elasticsearch是使用Java編寫的一種開源搜索引擎,也是一種分布式的搜索引擎架構,這篇文章主要給大家介紹了關于java操作elasticsearch的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • java 如何給對象中的包裝類設置默認值

    java 如何給對象中的包裝類設置默認值

    這篇文章主要介紹了java 如何給對象中的包裝類設置默認值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • java實現國產sm4加密算法

    java實現國產sm4加密算法

    這篇文章主要介紹了java實現國產sm4加密算法的步驟,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • RabbitMQ中的Channel和Exchange詳解

    RabbitMQ中的Channel和Exchange詳解

    這篇文章主要介紹了RabbitMQ中的Channel和Exchange詳解,創(chuàng)建和銷毀TCP連接很耗時,打開太多TCP連接,耗操作系統(tǒng)資源,并發(fā)量大到一定程度,系統(tǒng)的吞吐量會降低,使用一個connection多channel的方式,可以提升連接的利用率,需要的朋友可以參考下
    2023-08-08
  • @Value如何獲取yml和properties配置參數

    @Value如何獲取yml和properties配置參數

    這篇文章主要介紹了@Value如何獲取yml和properties配置參數的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java Native關鍵字原理及作用解析

    Java Native關鍵字原理及作用解析

    這篇文章主要介紹了Java Native關鍵字原理及作用解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • Java集合功能與用法實例詳解

    Java集合功能與用法實例詳解

    這篇文章主要介紹了Java集合功能與用法,結合實例形式詳細分析了java集合的基本概念、功能、原理、操作技巧與使用注意事項,需要的朋友可以參考下
    2020-04-04
  • 關于RedisTemplate之opsForValue的使用說明

    關于RedisTemplate之opsForValue的使用說明

    這篇文章主要介紹了關于RedisTemplate之opsForValue的使用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • java開發(fā)gui教程之jframe監(jiān)聽窗體大小變化事件和jframe創(chuàng)建窗體

    java開發(fā)gui教程之jframe監(jiān)聽窗體大小變化事件和jframe創(chuàng)建窗體

    這篇文章主要介紹了java開發(fā)gui教程中jframe監(jiān)聽窗體大小變化事件和jframe創(chuàng)建窗體的示例,需要的朋友可以參考下
    2014-03-03
  • JDBC 使用說明(流程、架構、編程)

    JDBC 使用說明(流程、架構、編程)

    這篇文章主要介紹了JDBC 使用說明,需要的朋友可以參考下
    2015-08-08

最新評論