承接用法一,可以把实现接口的监听器类单独放在外面,但是这时候有个问题,当处理接口的方法要改变框架里组件的状态时,需要在构建监听器是传入这个组件的引用作为参数。
上例做如下修改:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ButtonFrame extends JFrame
{ //继承框架private JPanel buttonPanel;private static final int DEFAULT_WIDTH = 300;private static final int DEFAULT_HEIGHT = 200;ColorListener yellowListener,blueListener, redListener;//声明监听器,作为一个成员变量public ButtonFrame(){      setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);// 创建按钮对象JButton yellowButton = new JButton("Yellow");JButton blueButton   = new JButton("Blue");JButton redButton    = new JButton("Red");buttonPanel = new JPanel();// 添加按钮到画板buttonPanel.add(yellowButton);buttonPanel.add(blueButton);buttonPanel.add(redButton);    add(buttonPanel);// 创建按钮监听器,要传入组件的引用yellowListener = new ColorListener(Color.YELLOW, buttonPanel);blueListener   = new ColorListener(Color.BLUE, buttonPanel);redListener    = new ColorListener(Color.RED, buttonPanel);// 为每个按钮设置监听器yellowButton.addActionListener(yellowListener);blueButton.addActionListener(blueListener);redButton.addActionListener(redListener);}
}//监听器单独作为一个外部类
class ColorListener implements ActionListener
{//实现监听接口private Color backgroundColor;private JPanel panel;public ColorListener(Color c,JPanel p) {//单独作为一个类时要传入要修改组件的引用backgroundColor = c;panel=p;}public void actionPerformed(ActionEvent event) {panel.setBackground(backgroundColor);//要把引用传给监听器类}
}

Java监听器用法(三):外部类监听器相关推荐

  1. 解决内存泄漏更加清楚的认识到Java匿名类与外部类的关系

    1.事件起因 在做项目的时候,通过Android Studio的Memory Monitor窗口观察程序内存使用情况,发现当程序退出的时候,有一部分应该释放掉的内存没有释放掉,知道程序中应该有内存泄漏 ...

  2. 在Java内部类中使用外部类的成员方法以及成员变量

    http://blog.csdn.net/zhongyili_sohu/article/details/8975947 众所周知,在定义成员方法或者成员变量的时候,可以给其加上一些权限的修饰词,以防止 ...

  3. java的内部类和外部类_java内部类 和外部类的区别

    下面说一说内部类(Inner Class)和静态内部类(Static Nested Class)的区别: 定义在一个类内部的类叫内部类,包含内部类的类称为外部类.内部类可以声明public.prote ...

  4. java如何写线程外部类_廖雪峰Java读书笔记(六)--多线程(或称并发)

    1. 多线程基础 首先要明白一些概念: 进程:把一个任务称为一个进程,浏览器就是一个进程,视频播放器是另一个进程,类似的,音乐播放器和Word都是进程. 线程:某些进程内部还需要同时执行多个子任务.例 ...

  5. java 匿名内部类对象持有外部类对象的引用

    转载自:https://www.jianshu.com/p/9335c15c43cf /*** @author hgl* @data 2019年1月10日* @description 接口*/ pub ...

  6. java内部类与外部类

    java内部类与外部类 java内部类与外部类 一.内部类的作用 二.内部类分类 一.成员内部类 1.非静态内部类 2.静态内部类 二.局部内部类 三.匿名内部类(重要) java内部类与外部类 概念 ...

  7. java图形界面外部类例题_[JAVA_开课吧资源]第四周 图形用户界面程序设计

    主题一 图形用户界面程序设计 » 图形用户界面概述 Java语言提供了大量支持GUI设计的类,如按钮.菜单.列表.特性框.对话框等组件类,同时也提供了包含窗口.面板等容器类.Java的抽象工具集AWT ...

  8. 深入理解Java中为什么内部类可以访问外部类的成员

    内部类简介 虽然Java是一门相对比较简单的编程语言,但是对于初学者, 还是有很多东西感觉云里雾里, 理解的不是很清晰.内部类就是一个经常让初学者感到迷惑的特性. 即使现在我自认为Java学的不错了, ...

  9. js事件监听器用法实例详解

    这篇文章主要介绍了js事件监听器用法,以实例形式较为详细的分析了javascript事件监听器使用注意事项与相关技巧,需要的朋友可以参考下 本文实例讲述了js事件监听器用法.分享给大家供大家参考.具体 ...

最新文章

  1. 在批处理中调用JS操作MongoDB
  2. restful可以转发么_DRF使用超链接API实现真正RESTful
  3. python3 统计文件夹下文件(含文件夹)的个数
  4. php api命名历史,历史上的今天,php接口源码api
  5. 破解centos7root口令
  6. 使用docker安装设置oracle
  7. mysql1558错误,mysql删除用户错误ERROR 1558解决办法
  8. mysql同步一段时间后失败_mysql 主从同步失败后
  9. js基础---字符串方法
  10. 新库上线 | CnOpenData境外投资企业(机构)名录数据
  11. smartprinter注册版_SmartPrinter免费版
  12. 【目标检测】SPP-Net论文理解(超详细版本)
  13. 转自--暗夜子羽--文章
  14. 使用tkinter实现 loading 等待效果
  15. 16. FizzBuzz
  16. solr4.3 solrconfig.xml配置文件
  17. 2017四月TOP100电商类App排行榜出炉
  18. 计算机网络复习——第四章网络层
  19. QListWidget使用,文件列表
  20. 2021-MAXP-DGL图机器学习大赛-Graph@ICT-复盘与总结【rank6】

热门文章

  1. rda8955平台搭建摘要截图
  2. vmware 扩展Ubuntu虚拟机的磁盘空间
  3. (chap4 IP协议) 路由控制表(Routing Table)
  4. 跨链Cosmos(9)异构跨链交易流程
  5. (chap2 TCP/IP基础知识) TCP/IP协议分层模型
  6. (chap9 基于HTTP的功能追加协议) HTTP瓶颈
  7. java元婴期(27)----java进阶(springmvc(1)---springmvc框架入门程序(上)(不基于注解开发))
  8. [Java基础] sort方法--------排序的那些事
  9. windows平台下安装Mysql8.0.20版本
  10. Docker安装及基本使用