java事件,java事件處理三要素

本文目錄一覽:

java的事件處理是什麼?

打個比方:如果用戶用滑鼠單擊了按鈕對象button,則該按鈕button就是事件源,而java運行時系統會生成ActionEvent類的對象actionE,該對象中描述了該單擊事件發生時的一些信息,然後,事件處理者對象將接收由java運行時系統傳遞過來的事件對象actionE並進行相應的處理。

由於同一個事件源上可能發生多種事件,因此java採取了授權處理機制,事件源可以把在其自身所有可能發生的事件分別授權給不同的事件處理者來處理。比如在Canvas對象上既可能發生滑鼠事件,也可能發生鍵盤事件,該Canvas對象就可以授權給事件處理者一來處理滑鼠事件,同時授權給事件處理者二來處理鍵盤事件。有時也將事件處理者稱為監聽器,主要原因也在於監聽器時刻監聽著事件源上所有發生的事件類型,一旦該事件類型與自己所負責處理的事件類型一致,就馬上進行處理。授權模型把事件的處理委託給外部的處理實體進行處理,實現了將事件源和監聽器分開的機制。事件處理者(監聽器)通常是一個類,該類如果要能夠處理某種類型的事件,就必須實現與該事件類型相對的介面。例如例5.9中類ButtonHandler之所以能夠處理ActionEvent事件,原因在於它實現了與ActionEvent事件對應的介面ActionListener。每個事件類都有一個與之相對應的介面。將事件源對象和事件處理器(事件監聽器)分開。

使用授權處理模型進行事件處理的一般方法歸納如下:

1.對於某種類型的事件XXXEvent, 要想接收並處理這類事件,必須定義相應的事件監聽器類,該類需要實現與該事件相對應的介面XXXListener;

2.事件源實例化以後,必須進行授權,註冊該類事件的監聽器,使用addXXXListener(XXXListener ) 方法來註冊監聽器。

這是我的一點個人見解,希望對你有幫助,加油。

簡述java事件處理機制?

java事件處理機制你必須得明確以下幾個概念:

核心:java採用的是事件源——事件監聽器模型

1:事件(event):是指一個狀態的改變,或者一個活動的發生。例如,簡單常見的是單擊一個按鈕,或者輸入一個按鍵都是一個事件。

2:事件源(event source):能夠產生事件的對象稱為事件源,如文本框,按鈕,下拉列表等。

3:事件監聽器(event listener):需要一個對象對事件源進行監聽,以便對發生的事件做出處理,該對象就是事件監聽器。事件源通過調用相應的方法將某個對象作為自己的監聽器。無論應用程序還是小程序都採用這一機制。

例,對於按鈕,註冊監聽器的方法是 addActionListener(監視器);:

4: 事件源獲得監聽器之後,相應的操作就會導致事件的發生,並通知監聽器,監聽器就會做出相應的處理。

5:處理事件的介面:監聽器負責處理事件源發生的事件。為了處理事件源發生的事件,監聽器會自動調用一個方法來處理事件,該方法定義在相應事件的介面中。

java的事件處理機制是怎樣

JAVA中當事件發生時,他不會進行廣播,而是僅僅向關心此事件的對象發送消息。那麼他怎麼知道誰「關心」此事件呢。

這就要求關心此事件的對象,先行向事件的發出方進行註冊,表示我關心此事件,當事件發生時請通知我。

【簡單來說】:就是事件的「處理方」向事件的「發出方」先行註冊,當事件發生時,事件的「發生方」負責通知事件的「處理方」。

譬如我編寫一個窗口,用到了JFrame,我想實現一個功能,當按下Q鍵時,窗口關閉。

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import javax.swing.JFrame;

public class TestFrame extends JFrame {

private static final long serialVersionUID = 5671798241966272024L;

public static void main(String[] args) {

new TestFrame();

}

public TestFrame() {

setSize(400, 300);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setVisible(true);

addKeyListener(new MyKeyListener());// 這句話就是所謂的註冊事件。

// MyKeyListener作為事件的處理方,向事件的觸發方TestFrame進行註冊。

// 這句話的意思是說,MyKeyListener對TestFrame說,我對於你的鍵盤事件感興趣,如果有鍵盤事件請告訴我。

// 而TestFrame有一個列表保存著MyKeyListener對象的引用。當鍵盤按下時,他會列表中所有引用,調用KeyPressed方法。

// 當鍵盤鬆開時還會調用keyReleased方法,但是我們對於鍵盤鬆開不太關心,所以下面的類,我們可以只編寫KeyPressed方法。

}

private final class MyKeyListener extends KeyAdapter {

@Override

public void keyPressed(KeyEvent e) {

if (e.getKeyCode() == KeyEvent.VK_Q) {

System.exit(0);

}

}

}

}

java什麼是事件?什麼是事件源

常見的事件包括 移動滑鼠 , 單雙擊滑鼠各個按鈕 ,單擊按鈕 ,在文本欄位輸入 ,在菜單中選擇菜單項 ,在組合框中選擇、單選和多選 ,拖動滾動條 ,關閉窗口………

事件源 與用戶進行交互的GUI組件,表示事件來自於哪個組件或對象

比如要對按鈕被按下這個事件編寫處理程序,按鈕就是事件源

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/303499.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-31 11:50
下一篇 2024-12-31 11:50

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論