0

0

Java AWT实现事件处理流程是什么

王林

王林

发布时间:2023-05-04 17:52:16

|

1586人浏览过

|

来源于亿速云

转载

    AWT的事件处理

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

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

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

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

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

      立即学习Java免费学习笔记(深入)”;

    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) {
         }
     }

    结果

    Cutout.Pro抠图
    Cutout.Pro抠图

    AI批量抠图去背景

    下载

    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()方法,当按钮被点击时,会把单击事件作为对象传递给事件监听器,做出退出程序的处理。

    相关文章

    java速学教程(入门到精通)
    java速学教程(入门到精通)

    java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

    下载

    相关标签:

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    相关专题

    更多
    php源码安装教程大全
    php源码安装教程大全

    本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

    7

    2025.12.31

    php网站源码教程大全
    php网站源码教程大全

    本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

    4

    2025.12.31

    视频文件格式
    视频文件格式

    本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

    7

    2025.12.31

    不受国内限制的浏览器大全
    不受国内限制的浏览器大全

    想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

    7

    2025.12.31

    出现404解决方法大全
    出现404解决方法大全

    本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

    42

    2025.12.31

    html5怎么播放视频
    html5怎么播放视频

    想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

    4

    2025.12.31

    关闭win10系统自动更新教程大全
    关闭win10系统自动更新教程大全

    本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

    3

    2025.12.31

    阻止电脑自动安装软件教程
    阻止电脑自动安装软件教程

    本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

    3

    2025.12.31

    html5怎么使用
    html5怎么使用

    想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

    2

    2025.12.31

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Kotlin 教程
    Kotlin 教程

    共23课时 | 2.1万人学习

    C# 教程
    C# 教程

    共94课时 | 5.7万人学习

    Java 教程
    Java 教程

    共578课时 | 40万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号