Java监听器的四种实现方法

您所在的位置:网站首页 计算机中关闭窗口的方法 Java监听器的四种实现方法

Java监听器的四种实现方法

2023-11-18 05:23| 来源: 网络整理| 查看: 265

监听器的四种实现方法

android监听有4种实现方法,分别为: 自身类作为事件监听器 外部类作为事件监听器 匿名内部类作为事件监听器 内部类作为事件监听器 其中在大二学习Java的过程中,用的最多的是第三个“匿名内部类作为监听器”

在学习监听器之前,先回顾一下,

什么是监听器?

查了一下百度百科,他给的定义是:Java事件监听器是由事件类和监听接口组成,自定义一个事件前,必须提供一个事件的监听接口以及一个事件类。JAVA中监听接口是继承java.util.EventListener的类,事件类继承java.util.EventObject的类。 通俗来说就是:监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。

为什么我们要使用监听器?

监听器在Java中是非常重要的一种方法。在生活中也经常会用到。 监听器可以用来检测网站的在线人数,统计网站的访问量等等!

监听器组件

监听器涉及三个组件:事件源,事件对象,事件监听器 当事件源发生某个动作的时候,它会调用事件监听器的方法,并在调用事件监听器方法的时候把事件对象传递进去。 我们在监听器中就可以通过事件对象获取得到事件源,从而对事件源进行操作! (1)事件:用户对组件的一个操作,称之为一个事件 (2)事件源:发生事件的组件就是事件源 (3)事件监听器(处理器):监听并负责处理事件的方法

执行顺序 1、给事件源注册监听器 2、组件接受外部作用,也就是事件被触发 3、组件产生一个相应的事件对象,并把此对象传递给与之关联的事件处理器 4、事件处理器启动,并执行相关的代码来处理该事件。

Java事件处理机制:自身类作为事件监听器 import javax.swing.*; import java.awt.*; import java.awt.event.*; lass ThisClassEvent extends JFrame implements ActionListener{ JButton btn; public ThisClassEvent(){ super("Java事件监听机制"); setLayout(new FlowLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); btn=new JButton("点击"); btn.addActionListener(this); getContentPane().add(btn); setBounds(200,200,300,160); setVisible(true); } /**************************************/ public void actionPerformed (ActionEvent e){ Container c=getContentPane(); c.setBackground(Color.red); } /**************************************/ public static void main(String args[]){ new ThisClassEvent(); } } 外部类作为事件监听器 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class ActionListenerDemo { public static void main(String[] args) { JFrame f = new JFrame(); //创建窗体 JPanel p = new JPanel(); //创建面板 JButton btn = new JButton("点我"); //创建一个按钮 //外部类的实现 //创建监听器ActionListener //new ActionListener();错误,接口不能new //创建实现子类InterfaceDemo InterfaceDemo a = new InterfaceDemo(); //将监听器InterfaceDemo绑定到btn按钮上 btn.addActionListener(a); p.add(btn); //将按钮添加到面板中 f.add(p); //将面板添加到窗体中 f.setSize(400,300); //设置窗体的大小 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭窗体的后台 f.setVisible(true); //设置窗体可见 } } import java.awt.event.ActionEvent; import java.awt.event.ActionListener; //事件监听器,ActionListener public class InterfaceDemo implements ActionListener { public void actionPerformed(ActionEvent e) { System.out.println("你点我了..."); } } 匿名内部类作为事件监听器 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class AnonymousEvent extends JFrame{ JButton btn; public AnonymousEvent(){ super("Java事件监听机制"); setLayout(new FlowLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); btn=new JButton("点击"); /*匿名内部类******************************/ btn.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ Container c=getContentPane(); c.setBackground(Color.red); } } ); /***************************************/ getContentPane().add(btn); setBounds(200,200,300,160); setVisible(true); } public static void main(String args[]){ new AnonymousEvent(); } } 内部类作为事件监听器 import java.awt.*; import java.awt.event.*; import javax.swing.*; ss InnerClassEvent extends JFrame{ JButton btn; public InnerClassEvent(){ super("Java事件监听机制"); setLayout(new FlowLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); btn=new JButton("点击"); btn.addActionListener(new InnerClass()); getContentPane().add(btn); setBounds(200,200,300,160); setVisible(true); } /*内部类*********************************/ class InnerClass implements ActionListener{ public void actionPerformed (ActionEvent e){ Container c=getContentPane(); c.setBackground(Color.red); } } /**************************************/ public static void main(String args[]){ new InnerClassEvent(); } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3