欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

Java监听器用法(三):外部类监听器

发布时间:2025/3/20 31 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Java监听器用法(三):外部类监听器 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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

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监听器用法(三):外部类监听器的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。