上一小节通过继承适配器类对事件源对象实现了监听,但在实际开发中,为了代码的简洁,经常通过匿名内部类来创建事件的监听器对象,针对所发生的事件进行处理。

    接下来通过案例来演示如何为窗口添加一个具有单击事件的按钮,具体代码如下所示。

    1. import java.awt.*;
    2. import java.awt.event.*;
    3. public class example10 {
    4. public static void main(String[] args) {
    5. Frame frame = new Frame("我的窗体!");
    6. frame.setSize(400, 300);
    7. frame.setLocation(300, 200);
    8. frame.setVisible(true);
    9. //创建按钮组件对象
    10. Button btn = new Button("NEXT");
    11. //把按钮对象加载到窗口上
    12. frame.add(btn);
    13. //用匿名内部类的方式为按钮组件注册监听器
    14. btn.addMouseListener(new MouseAdapter() {
    15. public void mouseClicked(MouseEvent e) {
    16. System.exit(0);
    17. // frame.dispose();
    18. }
    19. });
    20. }
    21. }

    运行程序后,生成的窗口,如下图所示。
    QQ截图20200619214957.png

    上述代码块中调用了按钮 btn 的 addMouseListener()方法,并在该方法中以匿名内部类的方法给按钮注册了一个鼠标事件监听器。由于只需要监听按钮的单击事件,因此使用了 MouseAdapter 适配器类,重写了 mouseClick()方法。当按钮被单击时,会把单击事件作为对象传递给事件监听器,做出退出程序的处理。