我正在研究Java Swing以及如何使用適配器模式處理事件,以便不執行處理事件的所有方法的重寫。有關適用於Java中的Swing事件的適配器模式的一些說明
我發現這個簡單的例子,我想知道有沒有理解它:
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
public class Sketcher {
JFrame window = new JFrame("Sketcher");
public Sketcher() {
window.setBounds(30, 30, 300, 300);
window.addWindowListener(new WindowHandler());
window.setVisible(true);
}
class WindowHandler extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.out.println("closing");
window.dispose(); // Release the window resources
System.exit(0); // End the application
}
}
public static void main(String[] args) {
new Sketcher();
}
}
什麼我明白的是:
的繪類包含一個main方法,簡單地科瑞一個新的Sketcher實例。
A 草繪器實例創建新的JFrame只顯示監視器上的框架的對象。
所以當我創建一個新的Sketcher時,創建一個新的JFrame對象。
在這裏,我有我的第一個疑問(這是一個屬的Java疑惑):
我爲什麼不創建JFrame WINDOS繪類的構造函數中的對象?
不管結果如何,在構造函數中,我設置一些屬性對JFrame對象,我添加的WindowListener這個JFrame的。
現在,addWindowListener是一個新的WindowHandler對象,它是處理Windows事件的自定義對象。
現在我有兩種方法可以處理這些事件:
使用經典聽衆:在這種情況下,我必須實現特定監聽所有可以在JFrame的
發生的不可能性事件使用適配器(如在這種情況下),所以在這種情況下,我使用一個名爲WindowHandler一個內部類擴展類w^indowAdapter。類WindowAdapter包含所有可能的JFrame事件的void方法。所以在WindowHandler我可以只定義我想處理的方法,而不是所有的方法。
它是我的推理權嗎?這是一個很好的教程示例,或者它提出了一些我現在看不到的問題?
TNX
安德烈
Tnx這麼多!我最大的問題是,在線重新連接,我找到很多教程,試圖將Swing適配器與適配器模式(我不知道爲什麼)進行匹配,並且我做了許多混淆因爲我無法說Swing適配器和適配器之間的關係GOF模式!爲什麼網上有很多人嘗試用適配器GOF模式來解釋這個概念對我來說是一種莫大的... – AndreaNobili