我正在研究 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();
}
}
我的理解是:
Sketcher类包含一个 main 方法,它简单地创建一个新的 Sketcher 实例。
Sketcher实例创建一个新的JFrame对象,该对象只是在监视器上显示一个框架。
因此,当我创建一个新的 Sketcher 对象时,会创建一个新的 JFrame 对象。
在这里,我有我的第一个疑问(这是一般的 Java 疑问):
为什么我不在 Sketcher 类的构造函数中创建 JFrame windows 对象?
不管怎样,在构造函数中,我为 JFrame 对象设置了一些属性,并向这个 JFrame 添加了一个 WindowListener。
现在 addWindowListener 是一个新的WindowHandler对象,它是一个处理 windows 事件的自定义对象。
现在我有两种可能来处理这些事件:
使用经典的监听器:在这种情况下,我必须为 JFrame 上可能发生的所有可能事件实现一个特定的监听器
使用适配器(如本例中),因此在本例中,我使用了一个名为WindowHandler的内部类,它扩展了类WindowAdapter。WindowAdapter类包含所有可能的 JFrame 事件的 void 方法。因此,在WindowHandler中,我只能定义我想要处理的方法,而不是所有方法。
我的推理对吗?这是一个很好的教程示例还是它提出了一些我现在看不到的问题?
肿瘤坏死因子
安德烈亚