疑惑点:动作监听时this的含义:可以理解为接口的多态

news2024/9/27 5:42:28

全部代码:

package test;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

public class test3 extends JFrame implements ActionListener {
    JButton jb1 =new JButton("你点我啊!");
    JButton jb2 =new JButton("你点不着我吧!");
    public test3(){
        initJFrame();
        initJButton();
        //显示整体窗体(true是显示,false是关闭),写在最后
        this.setVisible(true);
    }
    public void initJFrame() {
        //设置尺寸(单位是尺寸)
        this.setSize(603,680);
        //设置标题
        this.setTitle("事件演示");
        //设置窗口在页面置顶
        this.setAlwaysOnTop(true);
        //设置界面居中生成位置,利用null
        this.setLocationRelativeTo(null);
        //设置关闭模式
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        //取消加载图片的默认居中
        this.setLayout(null);
    }
    public void initJButton(){
        //给按钮设置位置和宽高
        jb1.setBounds(0,0,100,50);
        //给按钮添加事件
        jb1.addActionListener(this);
        jb2.setBounds(0,100,120,50);
        jb2.addActionListener(this);
        this.getContentPane().add(jb1);
        this.getContentPane().add(jb2);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        //获取当前被操作的按钮对象
        Object s = e.getSource();
        if (s==jb1){
            jb1.setSize(200,100);
        }else if (s==jb2){
            Random r =new Random();
            jb2.setLocation(r.nextInt(500),r.nextInt(500));
        }
    }
}

注意看这里的this是一个JFrame对象

        这里this是写在了initJFrame类的构造方法中的,所以代表initJFrame的对象,在创建test3这个类时,已经承接了ActionListerner这个接口,因为接口的多态,所以this可以是ActionListerner的实现类对象,所以自动调用所有重写的方法

addActionListener这个方法的作用是传入对象后会调用重写的actionPerformed方法

加深理解:如果不用this

要创建实现类:

才能调用该方法

this的使用可以理解为接口的多态,任意一个实现类对象均可以承接这个接口

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1705668.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

纽曼硬盘隐藏文件丢失怎么恢复?介绍几种有效的方法

纽曼硬盘作为存储设备中的佼佼者,以其高性能和稳定性受到了广大用户的青睐。然而,在使用过程中,有时我们可能会遇到一些意想不到的问题,比如隐藏文件的丢失。这对于依赖这些文件进行工作或生活的人来说无疑是一个巨大的困扰。那么…

香橙派AI Pro测评--ROS及激光SLAM

文章目录 前言一、外形与质感二、软件测评1. 系统界面2. ROS安装3. ROS节点测试4. SLAM算法测试 总结 前言 今天刚收到了官方寄来的“香橙派 AI Pro”开发板,这篇文章将会对香橙派 AI Pro的外形、质感、运行速度进行一个测评,然后我会在这个开发板上安装…

四步简单操作:轻松将iCloud照片恢复到相册

随着智能手机的普及,我们的生活中越来越多的照片存储在了云端,其中iCloud提供了便捷的照片备份和存储服务。但有时候,我们可能会不小心删除了在iCloud上的照片,或者想要将iCloud中的照片恢复到手机相册中。 在这篇文章中&#xf…

I.MX6ULL Linux 点灯实验理论及汇编点灯

系列文章目录 I.MX6ULL Linux C语言开发 I.MX6ULL Linux 点灯实验理论 系列文章目录一、I.MX6ULL GPIO二、I.MX6ULL IO 命名三、I.MX6ULL IO 复用四、I.MX6ULL IO 配置五、I.MX6ULL GPIO 配置六、I.MX6ULL GPIO 时钟使能七、硬件原理分析八、实验程序编写 一、I.MX6ULL GPIO 一…

flutter 的webview中touchstart和touchend 执行异常问题解决

效果 背景 使用flutter 调用webview内网页,网页内容是监听touchstart和 touchend,触发不同是事件,但是发现每次长按都 手指抬起后 才会执行 touchstart和touchend,满足不了我的需求,我的需求是当手指按下 立即执行touc…

aws emr启动standalone的flink集群

关键组件 Client,代码由客户端获取并做转换,之后提交给JobMangerJobManager,对作业进行中央调度管理,获取到要执行的作业后,会进一步处理转换,然后分发任务给众多的TaskManager。TaskManager,数…

解决mybatis/mybatis plus报错:Invalid bound statement (not found) 的方法汇总

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题,即在mybatis中dao接口与mapper配置文件在做映射绑定的时候接口与xml不匹配,要么是找不到,要么是找到了却匹配不到。 我的问题是项目没有把最新的方法x…

操作系统实验--终极逃课方法

找到图片里的这个路径下的文件 ,结合当前题目名称,把文件内容全部删除,改为print print的内容为下图左下角的预期输出的内容

Databend 开源周报第 146 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 支持 Expressio…

Rocky Linux 9.4 正式版发布 - RHEL 100% 1:1 兼容免费发行版

Rocky Linux 9.4 正式版发布 - RHEL 100% 1:1 兼容免费发行版 Rocky Linux 由 CentOS 项目的创始人 Gregory Kurtzer 领导 请访问原文链接:Rocky Linux 9.4 正式版发布 - RHEL 100% 1:1 兼容免费发行版,查看最新版。原创作品,转载请保留出处…

20212313 2023-2024-2 《移动平台开发与实践》第5次作业

20212313 2023-2024-2 《移动平台开发与实践》第5次作业 1.实验内容 设计并开发一个地图应用系统。 该实验需提前申请百度API Key,调用接口实现百度地图的定位功能、地图添加覆盖物和显示文本信息。 2.实验过程 2.1 获取SHA1 (1)打开控制台…

【Python编程】给电脑安装最新的 Python3.12.3

笔者最近更换了新的Win11系统,安装最新的Python版本(3.12.3)尝尝鲜。据说这个版本存在一些漏洞,笔者将后续更新编程过程中的相关问题(如果有)。Python3.12.3的安装过程比较简单,在此进行说明。 …

mac下载安装好软件后提示已损坏

mac下载安装好软件后提示已损坏 解决方法: 首先确保系统安全设置已经改为任何来源。 打开任何来源后,到应用程序目录中尝试运行软件,如果仍提示损坏,请在应用图标上,鼠标右键,在弹出菜单中点打开。 如果…

【Pandas】深入解析`pd.read_pickle()`函数

【Pandas】深入解析pd.read_pickle()函数 🌈 欢迎莅临我的个人主页👈这里是我深耕Python编程、机器学习和自然语言处理(NLP)领域,并乐于分享知识与经验的小天地!🎇 🎓 博主简介&…

WordPress子比主题美化-首页动态的图片展示

WordPress子比主题首页动态的图片展示 WordPress子比主题首页添加动态的图片展示,其他程序也可以用,复制代码到相应位置即可,也可作为指定分类,重点内容等,可以适合各个场景,需要的自取。 图片展示: 教程…

如何搭建个人观测云平台

如何搭建个人观测云平台 安装DataKit什么是DataKit? 仪表板指标管理监控 开通阿里云观测云服务后,在观测云平台页面进行下面的操作。 安装DataKit 什么是DataKit? DataKit 是观测云官方发布的数据采集应用,支持上百种数据的采集…

恢复视频3个攻略:从不同情况下的恢复方法到实践!

随着科技的进步,我们的生活被各种各样的数字内容所包围,其中,视频因其独特的记录性质,承载着许多重要的资料。但不管是自媒体人还是普通人日常生活随手一拍,都会遇到误删视频的情况。为了帮助您找回手机视频&#xff0…

数据挖掘与机器学习——分类算法

目录 机器学习算法最普通分类: 分类算法的定义: 分类算法的应用: 分类器实现分类: 分类器的构建标准: 概率模型: 贝叶斯公式: 朴素贝叶斯算法(朴素贝叶斯分类器)…

【吊打面试官系列】Java高并发篇 - Java 死锁以及如何避免?

大家好,我是锋哥。今天分享关于 【Java 死锁以及如何避免?】面试题,希望对大家有帮助; Java 死锁以及如何避免? Java 中的死锁是一种编程情况,其中两个或多个线程被永久阻塞,Java 死锁情况出现至…

正版软件 | Internet Download Manager 下载管理器

前言 IDM 是一个下载加速器,可将下载速度提高多达 8 倍,恢复、组织和安排下载。 30 天免费试用!https://www.internetdownloadmanager.cc/ 新版本 Internet Download Manager v 6.40:添加了 Windows 11 兼容性。改进了媒体采集…