教育路上
摘要:java 事件 適配器 ,JDK 提供了 一些適配器類,它們是監聽器接口的默認實現類,這些實現類中實現了接口的所有方法,但方法 中沒有任何代碼。。以下是我們為大家整理的,相信大家閱讀完后肯定有了自己的選擇吧。
2022-12-02 16:13網絡推薦
例 11-2 中的 MyWindowListener 類實現 WindowListener 接口后,需要實現接口中定義的 7
個方法,然而在程序中需要用到的只有 windowClosing()一個方法,其他六個方法都是空實現,沒有
發揮任何作用,這樣代碼的編寫明顯是一種多余但又必需的工作。針對這樣的問題,JDK 提供了
一些適配器類,它們是監聽器接口的默認實現類,這些實現類中實現了接口的所有方法,但方法
中沒有任何代碼。程序可以通過繼承適配器類來達到實現監聽器接口的目的,接下來通過繼承適
配器類來實現同例 11 -2 相同的功能,如例 11-3 所示。
例 11-3 Example03.javaimport java.awt.*;
import java.awt.event.*;
public class Example03 {
public static void main(String[] args) {
// 建立新窗體
Frame f = new Frame("我的窗體!");
// 設置窗體的寬和高
f.setSize(400, 300);
// 設置窗體的出現的位置
f.setLocation(300, 200);
// 設置窗體可見
f.setVisible(true);
// 為窗口組件注冊監聽器
f.addWindowListener(new MyWindowListener());
}
}
// 繼承 WindowAdapter 類,重寫 windowClosing()方法
class MyWindowListener extends WindowAdapter {
public void windowClosing(WindowEvent e) {
Window window = (Window) e.getComponent();
window.dispose();
}
}
例 11-3 實現了和例 11-2 相同的功能。定義的 MyWindowListener 類繼承了適配器類
WindowAdapter,由于實現的功能是關閉窗口,因此只需要對 windowClosing( )方法進行重寫即可。
需要注意的是,幾乎所有的監聽器接口都有對應的適配器類,通過繼承適配器類來實現監聽器接
口時,需要處理哪種事件,直接重寫該事件對應的方法即可。
11.2.3 用匿名內部類實現事件處理
例 11-3 通過繼承適配器類對事件源對象實現了監聽,但在實際開發中,為了代碼的簡潔,
經常通過匿名內部類來創建事件監聽器對象,針對所發生的事件進行處理。接下來通過案例來演
示如何為窗口添加一個具有點擊事件的按鈕,具體代碼如例 11-4 所示。
例 11-4 Example04.java
import java.awt.*;
import java.awt.event.*;
public class Example04 {
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() {
public void mouseClicked(MouseEvent e) {
System.exit(0);
}
});
}
}
編譯運行程序,生成的窗口如圖 11-8 所示.
圖 11-8 例 11-4 運行結果
例 11-4 中,調用按鈕 btn 的 addMouseListener( )方法,并在該方法中以匿名內部
類的方式給按鈕注冊了一個鼠標事件監聽器。由于只需要監聽按鈕的點擊事件,因此使用了
MouseAdapter 適配器類,重寫了 mouseClicked()方法,當按鈕被點擊時,會把點擊事件作為對
象傳遞給事件監聽器,做出退出程序的處理。
訪客的評論 2023/05/28 23:34
文中描述的是準確的嗎,如何報名!