验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

Java AWT实现事件处理的方法是什么

阅读:834 来源:乙速云 作者:代码code

Java AWT实现事件处理的方法是什么

      AWT的事件处理

      事件处理主要是为了响应用户的操作

      • 事件对象(Event):封装了GUI组件上发生的特定事件(通常就是用户的一次操作)。

      • 事件源(组件):事件发生的场所,通常就是产生事件的组件

      • 监听器(Listener):负责监听事件源上发生的事件,并对各种事件做出相应处理的对象(对象中包含事件处理器)。

      • 事件处理器:监听器对象对接收的事件对象进行相应处理的办法。

      AWT中的事件继承图

      Java AWT实现事件处理的方法是什么

      在程序中创建了一个实现WindowListener接口的事件监听器类MyWindowListener,当通过addWindowListener()方法将窗口与监听器对象绑定后,单击关闭按钮,会触发监听器对象的windowClosing()方法,将当前窗口隐藏并释放,从而关闭了窗口。

      代码如下

       package AWT;
       import java.awt.*;
       import java.awt.event.WindowEvent;
       import java.awt.event.WindowListener;
       public class Example08 {
           public static void main(String[] args) {
               Frame f=new Frame("我的世界");
               f.setSize(400,300);
               f.setLocation(300,200);
               f.setVisible(true);
               //给窗口注册一个监听器
               MyWindowListener mw=new MyWindowListener();
               f.addWindowListener(mw);
           }
       }
       class MyWindowListener implements WindowListener{
           @Override
           public void windowOpened(WindowEvent e) {
           }
           @Override
           public void windowClosing(WindowEvent e) {
               Window window= e.getWindow();
               window.setVisible(false);
               window.dispose();
           }
           @Override
           public void windowClosed(WindowEvent e) {
           }
           @Override
           public void windowIconified(WindowEvent e) {
           }
           @Override
           public void windowDeiconified(WindowEvent e) {
       
           }
           @Override
           public void windowActivated(WindowEvent e) {
           }
           @Override
           public void windowDeactivated(WindowEvent e) {
           }
       }

      结果

      Java AWT实现事件处理的方法是什么

      事件适配器

      为了解决生成的方法空实现的问题,jdk提供了一些适配器类,它们是监听器接口的默认实现类,这些实现类中实现了接口中所有的方法,但是方法中没有代码,程序可以通过继承适配器类来达到实现监听器接口的目的。

       package AWT;
       import java.awt.*;
       import java.awt.Frame;
       import java.awt.event.WindowAdapter;
       import java.awt.event.WindowEvent;
       import java.awt.event.WindowListener;
       public class Example08 {
           public static void main(String[] args) {
               Frame f=new Frame("我的世界");
               f.setSize(400,300);
               f.setLocation(300,200);
               f.setVisible(true);
              //给窗口注册一个监听器
               MyWindowListener mw=new MyWindowListener();
               f.addWindowListener(mw);
           }
       }
                //继承WindowAdapter类,重写windowClosing()方法
       class MyWindowListener1 extends WindowAdapter {
       
           @Override
           public void windowClosing(WindowEvent e) {
               Window window=(Window) e.getComponent();
               window.dispose();
           }
       }

      由于MyWindowListener类继承了适配器类WindowAdapter,由于实现的功能是关闭窗口,所以只需要重写windowClosing()方法,几乎所有的监听器接口都有对应的适配器类,通过继承适配器类来实现监听器接口时,需要处理那些事件,就直接重写该事件对应的方法。

      用匿名内部类实现事件处理

      上面的事件适配器中通过继承适配器类对事件源对象实现了监听,但是为了代码的简洁,可以使用匿名内部类来创建事件的监听器对象,对所发生的事件进行处理。

      为窗口添加一个具有点击事件的按钮

       package AWT;
       import java.awt.*;
       import java.awt.event.MouseAdapter;
       import java.awt.event.MouseEvent;
       public class NiMing {
           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() {
                   @Override
                   public void mouseClicked(MouseEvent e) {
                       System.exit(0);
                   }
               });
           }
       }

      首先调用了btn的addMouseListner()方法,在这个方法中以匿名内部类的方法给按钮注册了一个鼠标事件监听器,因为只需要监听按钮的点击事件,使用了MouseAdapter适配器类,重写了mouseClicked()方法,当按钮被点击时,会把单击事件作为对象传递给事件监听器,做出退出程序的处理。

    分享到:
    *特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
    相关文章
    {{ v.title }}
    {{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
    你可能感兴趣
    推荐阅读 更多>