下面小編就為大家帶來一篇java處理按鈕點擊事件的方法。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧
不同的事件來源可以產生不同類別的事件。例如,按鈕可以傳送一個ActionEvent對象,而視窗可以傳送WindowEvent物件。
AWT時間處理機制的摘要:
#1. 監聽器物件是一個實作了特定監聽器介面(listener interface)的類別的實例。
2. 事件來源是能夠註冊監聽器物件並傳送事件物件的物件。
3. 當事件發生時,事件來源將事件物件傳遞給所有註冊的監聽器。
4. 監聽器物件將利用事件物件中的資訊決定如何對事件做出回應。
下面是監聽器的一個範例:
ActionListener listener = ...; JButton button = new JButton("OK"); button.addActionListener(listener);
現在,只要按鈕產生了一個“動作事件”,listener物件就會得到通告。對於按鈕來說,正像我們想到的,動作事件就是點擊按鈕。
為了實作ActionListener接口,監聽器類別必須有一個被稱為actionPerformed的方法,該方法接收一個ActionEvent物件參數。
class MyListener implements ActionListener { ...; public void actionPerformed(ActionEvent event) { //reaction to button click goes here } }
只要使用者點選了按鈕,JButton物件就會建立一個ActionEvent對象,然後呼叫listener.actionPerformed(event)傳遞事件物件。可以將多個監聽器物件新增到一個像按鈕這樣的事件來源。這樣一來,只要使用者點擊按鈕,按鈕就會呼叫所有監聽器的actionPerformed方法。
實例:處理按鈕點擊事件
為了加深對事件委託模型的理解,下面以一個回應按鈕點擊事件的簡單範例來說明所需要知道的細節。在這個範例中,想要在一個面板中放置三個按鈕,並新增三個監聽器物件用來作為按鈕的動作監聽器。
在這個情況下,只要使用者點擊面板上的任何一個按鈕,相關的監聽器物件就會接收到一個ActionEvent對象,它表示有個按鈕被點擊了。在範例程式中,監聽器物件將改變面板的背景顏色。
在示範如何監聽按鈕點擊事件之前,首先需要先講解如何建立按鈕以及如何將他們新增到面板中。
可以透過在按鈕建構器中指定一個標籤字串、一個圖示或兩個項目都指定來建立一個按鈕。以下是兩個範例:
JButton yellowButton = new JButton("Yellow"); JButton blueButton = new JButton(new ImageIcon("blue-ball.gif"));
將按鈕加入面板中需要呼叫add方法:
JButton yellowButton = new JButton("Yellow"); JButton blueButton = new JButton("Blue"); JButton redButton = new JButton("Red"); buttonPanel.add(yellowButton); buttonPanel.add(blueButton); buttonPanel.add(redButton);
至此,知道如何將按鈕新增到面板上,接下來需要增加讓面板監聽這些按鈕的程式碼。這需要一個實作了ActionListener介面的類別。如前所述,應該包含一個actionPerformed方法,其簽名為:
public void actionPerformed(ActionEvent event)
#當按鈕點擊時,希望將面板的背景顏色設定為指定的顏色。這個顏色儲存在監聽器類別中:
class ColorAction implements ActionListener { public ColorAction(Color c) { backgroundColor = c; } public void actionPerformed(actionEvent event) { //set panel background color } private Color backgroundColor; }
然後,為每種顏色建構一個對象,並將這些物件設定為按鈕監聽器。
ColorAction yelloAction = new ColorAction(Color.YELLOW); ColorAction blueAction = new ColorAction(Color.BLUE); ColorAction redAction = new ColorAction(Color.RED); yellowButton.addActionListener(yellowAction); blueButton.addActionListener(blueAction); redButton.addActionListener(redAction);
例如,如果一個使用者在標有「Yellow」的按鈕上點擊了一下,yellowAction物件的actionPerformed方法就會被呼叫。這個物件的backgroundColor實例域被設定為Color.YELLOW,現在就將面板的背景顏色設為黃色。
這裡還有一個需要考慮的問題。 ColorAction物件不能存取buttonpanel變數。可以用兩種方式解決這個問題。一個是將面板儲存在ColorAction物件中,並在ColorAction的建構器中設定它;另一個是將ColorAction作為ButtonPanel類別的內部類,如此,它的方法就自動地擁有存取外部面板的權限了。
下面說明如何將ColorAction類別放在ButtonFrame類別內。
class ButtonFrame extends JFrame { ... private class ColorAction implents ActionListener { ... public void actionPerformed(ActionEvent event) { buttonPanel.setBackground(backgroundColor); } private Color backgroundColor; } private Jpanel buttonPanel; }
以上是詳解java處理按鈕點擊事件的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA

本文解釋了用於構建分佈式應用程序的Java的遠程方法調用(RMI)。 它詳細介紹了接口定義,實現,註冊表設置和客戶端調用,以解決網絡問題和安全性等挑戰。

本文詳細介紹了用於網絡通信的Java的套接字API,涵蓋了客戶服務器設置,數據處理和關鍵考慮因素,例如資源管理,錯誤處理和安全性。 它還探索了性能優化技術,我

本文詳細介紹了創建自定義Java網絡協議。 它涵蓋協議定義(數據結構,框架,錯誤處理,版本控制),實現(使用插座),數據序列化和最佳實踐(效率,安全性,維護


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3漢化版
中文版,非常好用

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1
強大的PHP整合開發環境