Java监听器用法(三):外部类监听器
2015-07-21 19:41
501 查看
承接用法一,可以把实现接口的监听器类单独放在外面,但是这时候有个问题,当处理接口的方法要改变框架里组件的状态时,需要在构建监听器是传入这个组件的引用作为参数。
上例做如下修改:
上例做如下修改:
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定时任务spring+quartz作业调度
- Java基础的一些博客
- java反射机制入门04
- (三)基于Eclipse的STM32开发--调试篇
- java匿名类的用法
- Ubuntu java 环境变量
- java反射机制入门3
- java的反射
- Java经典算法大全
- eclipse 内置注解设置
- java基础语法--01
- Eclipse中代码格式及类和方法等注释设置及对应快捷键
- Java中的private、protected、public和default的区别
- window8.1编译hadoop2 eclipse插件,并远程调试hadoop程序
- Java 二分法查找算法
- 用java 写 merge sort
- java 二叉树的查找方法
- struts2请求过程源码分析
- java 发送邮件
- 如何编译带有package的java文件