java的事件處理模型中(在java的異常處理模型中)

本文目錄一覽:

Java中什麼是委託事件處理模型

什麼是委託事件模型

在教材上的圖中,我們可以發現,用戶通過鍵盤、滑鼠等進行操縱的行為,最終都傳遞給了JVM,那麼JVM在接收到這些事件以後該如何處理呢?我們把這種處理事件的方案,稱之為事件模型。

Java中採用的是委託事件模型:jdk1.1以後,引入的一種新的事件代理模塊,通過它,事件源發出的事件被委託給(註冊了的)事件監聽器(Listener),並由它負責執行相應的響應方法。比如:病人生病請醫生。

基於這種模型,我們使用兩種類型的對象來執行事件機制,這兩種對象是:

事件源對象

事件的偵聽對象

委託事件模型的實現步驟

在java語言中委託事件模型的處理步驟如下:

1.建立事件源對象。如各種GUI的組件。

2.為事件源對象選擇合適的事件監聽器。比如事件源對象如果是「按鈕」,那麼我們能想到的發生在按鈕身上最多的,應該是單擊事件了。這時我就應該選擇滑鼠單擊事件的監聽器。

3.為監聽器添加適當的處理程序。比如當按鈕單擊事件發生後,希望完成的代碼。

4.為監聽器與事件源建立聯繫。

窗體自身實現事件監聽

我們在剛才的例子中使用了兩個對象,一個是事件源對象,即JFrame窗體,另外還創建了一個監聽器對象。事實上在實際開發過程中,我們往往,將這兩個類寫在一起,就是說一個窗體類自己監聽自己的事件

其他事件監聽器介面的使用

Java支持的事件監聽器介面非常多,常見的主要有:

ActionListener 行為監聽介面

AdjustmentListener 調整監聽介面

ItemListener 選項監聽介面

TextListener 文本監聽介面

ComponentListener 組件監聽介面

KeyListener 鍵盤監聽介面

MouseListener 滑鼠點擊監聽介面

MouseMotionListener 滑鼠移動監聽介面

FocusListener 游標聚焦監聽介面

WindowListener 窗體監聽介面

ContainerListener 容器監聽介面

KeyListener介面與KeyAdapter類

KeyListener介面:監聽鍵盤事件。

該介面中定義了如下三個方法:

keyPressed() 鍵盤按下時觸發

keyReleased() 鍵盤釋放時觸發

keyTyped() 鍵盤單擊一次時觸發

KeyAdpeter適配器:即使我們只想使用上述三個方法中的一種,那麼我們也必須在KeyListener介面的實現類中對這三種方法進行重寫,這種方式顯然增加了很多無效代碼,我們可以使用適配器模式解決。

匿名內部類

WindowListener介面與WindowAdapter類

WindowListener介面:監聽窗體的行為。

windowListener介面常用方法:

windowActivated(WindowEvent e) 將 Window 設置為活動 Window 時 調用。

windowClosed(WindowEvent e) 因對窗口調用 dispose 而將其關閉 時調用。

windowClosing(WindowEvent e) 用戶試圖從窗口的系統菜單中關閉窗 口時調用。

windowDeactivated(WindowEvent e) 當 Window 不再是活動 Window 時調用。

windowDeiconified(WindowEvent e) 窗口從最小化狀態變為正常狀 態時調用。

windowIconified(WindowEvent e) 窗口從正常狀態變為最小化狀態 時調用。

windowOpened(WindowEvent e) 窗口首次變為可見時調用。

MouseListener介面與MouseAdapter類

MouseListener介面:監聽滑鼠點擊的行為。

MouseListener介面常用方法:

mouseClicked(MouseEvent e) 滑鼠按鍵在組件上單擊(按下並釋放)時調用。

mouseEntered(MouseEvent e) 滑鼠進入到組件上時調用。

mouseExited(MouseEvent e) 滑鼠離開組件時調用。

mousePressed(MouseEvent e) 滑鼠按鍵在組件上按下時調用。

mouseReleased(MouseEvent e) 滑鼠按鈕在組件上釋放時調用。

MouseMotionListener介面與MouseMotionAdapter類

MouseMotionListener介面:監聽滑鼠移動的行為。

MouseMotionListener介面常用方法:

mouseDragged(MouseEvent e) 滑鼠按鍵在組件上按下並拖動時調用。

mouseMoved(MouseEvent e) 滑鼠按鍵在組件上移動(無按鍵按下)時調用

java swing事件處理模型包括幾部分,分別含義和相互作用

9部分,分別是

標籤 (JLabel)標籤 (JLabel)通常是用來標識另外一個組件的含義。以在標籤上顯示文字、圖象或是文字圖象的組合。

2.密碼框 (JPasswordField)

密碼框實際上是一種特殊類型的文本框,用戶可以向其中輸入文本並加以編輯。

3.菜單

菜單也是一種常用的GUI組件,菜單採用的是一種層次結構,最頂層是菜單欄(JMenuBar);

4.彈出式菜單 彈出式菜單(JPopupMenu)是一種特殊的菜單,和普通菜單的區別在於其不固定在菜單欄中,而是可以四處浮動的。

5.工具條 有些菜單選項的使用頻率較高,每次使用都要打開菜單,效率較低。為此,可以在工具條(JToolBar)中提供與這些菜單選項相對應快捷按鈕,以提高用戶的效率。工具條中通常是一些帶有圖標的按鈕,當然也可以是其它類型的GUI組件

6.對話框

對話框是用戶和應用程序進行交互(對話)的一個橋樑:對話框可以用於收集用戶的輸入數據傳遞給應用程序,或是顯示應用程序的運行信息給用戶。

7.表格 表格(JTable)也是一種常用的GUI組件,常用來顯示大量的數據。

8.樹形控制項

9.JScrollbar 滾動條

1.java的事件處理機制是怎樣的

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

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

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

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

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

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

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

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

簡述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 ) 方法來註冊監聽器。

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

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
POIWD的頭像POIWD
上一篇 2024-10-03 23:26
下一篇 2024-10-03 23:26

相關推薦

  • Java JsonPath 效率優化指南

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

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

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

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

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

    編程 2025-04-29
  • TensorFlow Serving Java:實現開發全功能的模型服務

    TensorFlow Serving Java是作為TensorFlow Serving的Java API,可以輕鬆地將基於TensorFlow模型的服務集成到Java應用程序中。…

    編程 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
  • Python訓練模型後如何投入應用

    Python已成為機器學習和深度學習領域中熱門的編程語言之一,在訓練完模型後如何將其投入應用中,是一個重要問題。本文將從多個方面為大家詳細闡述。 一、模型持久化 在應用中使用訓練好…

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

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

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

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

    編程 2025-04-29

發表回復

登錄後才能評論