Java事件处理的几种语法

文章介绍了事件处理的核心在于使用监听类来监听事件,提供了四种模板:一是实现监听接口的独立类;二是针对不同事件创建单独监听对象;三是将监听类作为内部类;四是使用Lambda表达式简化代码。这些模板展示了Java中处理事件的不同方式,从传统的类实现到更简洁的Lambda表达式。
摘要由CSDN通过智能技术生成

     事件处理的关键在于把握 “监听类”三个字,用监听类的对象去监听具体事件。所以必须要有监听类:

     模板一:让包含“事件源”的对象担任监听者。建立实现监听接口的类,再建立该类的对象来监听具体事件,也就是说具体事件(如按键)放到实现监听接口的类中。这种模式就是“某class 类 implement ActionListener”。如这个类系统自带的如JFrame,则往往采用某类继承这个class 类,如“子类 extends JFrame implement ActionListener“。

package nice;

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

public class Test4 extends JFrame implements ActionListener {

    static Test4 frm=new Test4();

    static JButton bt=new JButton("改变字体颜色");

    static JTextArea ta=new JTextArea("欢迎学校委托事件模型",5,20);

        public static void main(String[] args) {

       bt.addActionListener(frm);

       frm.setTitle("操作事件");

       frm.setLayout(new FlowLayout());

       frm.setSize(260,170);

       frm.add(bt);

       frm.add(ta);

       frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

       frm.setVisible(true);

    }

    public void actionPerformed(ActionEvent e)

    {ta.setForeground(Color.RED);

}

}

     模板二:定义内部类来担任监听者。通常将实现接口的类定义在主类里,使之成为它的内部类,因为是内部类,所以可以访问外部类的所有成员。(ActionListener用于接收操作事件的侦听器接口。对处理操作事件感兴趣的类可以实现此接口,而使用该类创建的对象可使用组件的 addActionListener 方法向该组件注册。在发生操作事件时,调用该对象的 actionPerformed 方法。)

public class Test5

      {static JFrame frm=new JFrame ("操作事件");

       static JButton bt=new JButton("改变字体颜色");

       static JTextArea ta=new JTextArea("欢迎学校委托事件模型",5,20);

           public static void main(String[] args) {

           MyActLister ma=new MyActLister();

            bt.addActionListener(ma);

           frm.setTitle("操作事件");

           frm.setLayout(new FlowLayout());

           frm.setSize(260,170);

           frm.add(bt);

           frm.add(ta);

       frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

           frm.setVisible(true);

       }

    static class MyActLister implements ActionListener{

        public void actionPerformed(ActionEvent e)

        {ta.setForeground(Color.RED);

    }

    }

    }

        模板三:用匿名内部类来担当监听者。

       public class Test6 {

       static JFrame frm=new JFrame ("操作事件");

       static JButton bt=new JButton("改变字体颜色");

       static JTextArea ta=new JTextArea("欢迎学校委托事件模型",5,20);

        public static void main(String[] args)

       {bt.addActionListener(new ActionListener()

       {public void actionPerformed(ActionEvent e)

        {ta.setForeground(Color.RED);}

        });

           frm.setTitle("操作事件");

           frm.setLayout(new FlowLayout());

           frm.setSize(260,170);

           frm.add(bt);

           frm.add(ta);

           frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

           frm.setVisible(true);

       }

    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值