当前位置: 移动技术网 > IT编程>开发语言>Java > ActionListener 监听事件源产生的事件

ActionListener 监听事件源产生的事件

2018年09月05日  | 移动技术网IT编程  | 我要评论
用户在窗体上对组件进行一定动作,比如鼠标点击,会产生一些相应的事件,如ActionEvents,ChangeEvents,ItemEvents等,来响应用户的鼠标点击行为。通过实现ActionListener接口来监听这些事件并作出处理 1.if语句判断是哪个事件源 代码示例: 2.通过匿名内部类的 ...

用户在窗体上对组件进行一定动作,比如鼠标点击,会产生一些相应的事件,如actionevents,changeevents,itemevents等,来响应用户的鼠标点击行为。通过实现actionlistener接口来监听这些事件并作出处理

1.if语句判断是哪个事件源

代码示例:

package actionevent;

import java.awt.event.actionevent;
import java.awt.event.actionlistener;
import java.awt.event.windowadapter;

import javax.swing.jbutton;
import javax.swing.jframe;
import javax.swing.joptionpane;
import javax.swing.jpanel;

/**
* 在这个例子中,利用一个actionlistener来监听事件源产生的事件
* 用一些if语句来决定是哪个事件源
1. 新建一个组件(如jbutton)。

2. 将该组件添加到相应的面板(如jpanel)。

3. 注册监听器以监听事件源产生的事件(如通过actionlistener来响应用户点击按钮)。

4. 定义处理事件的方法(如在actionlistener中的actionperformed中定义相应方法)。
*/

public class actiondemo
{
    private static jframe jframe;
    private static jpanel jpanel;
    private jbutton button1;
    private jbutton button2;
    
    public static void main(string[] args){
        jframe=new jframe();
        new actiondemo();
        jframe.add(jpanel);
        jframe.pack();//根据组件大小自适应窗口大小
        jframe.setvisible(true);//窗口可显示
        
        //点击窗口关闭时退出应用程序
        jframe.addwindowlistener(new windowadapter(){
            public void windowclosing(){
                system.exit(0);
            }
        });
        
    }
    
    public actiondemo(){
        jpanel=new jpanel();//实例化面板
        button1=new jbutton("按钮1");//实例化按钮
        button2=new jbutton("按钮2");
        simplelistener sl=new simplelistener();//实例化监听类
        button1.addactionlistener(sl);//添加监听给按钮
        button2.addactionlistener(sl);
        jpanel.add(button1);//按钮添加到面板
        jpanel.add(button2);
        
        
    }
    
    private class simplelistener implements actionlistener{
        //实现此方法,实现窗体上发生点击按钮事件后的处理
        @override
        public void actionperformed(actionevent e) {
            // todo auto-generated method stub
            system.out.println(e.getsource());
            string butname=e.getactioncommand();
            if(butname.equals("按钮1")){
                joptionpane.showmessagedialog(jframe, "按钮1被点击");
            }else if(butname.equals("按钮2")){
                joptionpane.showmessagedialog(jframe, "按钮2被点击");
            }else{
                joptionpane.showmessagedialog(jframe, "unknow event");
            }
        }
        
    }

}


    

2.通过匿名内部类的方式注册监听

代码示例:

package actionevent;

import java.awt.event.actionevent;
import java.awt.event.actionlistener;
import java.awt.event.windowadapter;

import javax.swing.jbutton;
import javax.swing.jframe;
import javax.swing.joptionpane;
import javax.swing.jpanel;

/**
 * 在这个例子中,利用一个actionlistener来监听事件源产生的事件 ,用匿名内部类的方式
 * 1. 新建一个组件(如jbutton)。
 * 
 * 2. 将该组件添加到相应的面板(如jpanel)。
 * 
 * 3. 注册监听器以监听事件源产生的事件(如通过actionlistener来响应用户点击按钮)。
 * 
 * 4. 定义处理事件的方法(如在actionlistener中的actionperformed中定义相应方法)。
 */

public class actiondemo {
    private static jframe jframe;
    private static jpanel jpanel;
    private jbutton button1;
    private jbutton button2;

    public static void main(string[] args) {
        jframe = new jframe();
        new actiondemo();
        jframe.add(jpanel);
        jframe.pack();// 根据组件大小自适应窗口大小
        jframe.setvisible(true);// 窗口可显示

        // 点击窗口关闭时退出应用程序
        jframe.addwindowlistener(new windowadapter() {
            public void windowclosing() {
                system.exit(0);
            }
        });

    }

    public actiondemo() {
        jpanel = new jpanel();// 实例化面板
        button1 = new jbutton("按钮1");// 实例化按钮
        button2 = new jbutton("按钮2");
        button1.addactionlistener(new actionlistener() {

            @override
            public void actionperformed(actionevent e) {
                // todo auto-generated method stub
                joptionpane.showmessagedialog(jframe, "按钮1被点击");
            }

        });
        button2.addactionlistener(new actionlistener() {

            @override
            public void actionperformed(actionevent e) {
                // todo auto-generated method stub
                joptionpane.showmessagedialog(jframe, "按钮2被点击");
            }

        });
        jpanel.add(button1);// 按钮添加到面板
        jpanel.add(button2);

    }

}

3.给每一个组件创建一个监听器

代码示例:

package actionevent;

import java.awt.event.actionevent;
import java.awt.event.actionlistener;
import java.awt.event.windowadapter;

import javax.swing.jbutton;
import javax.swing.jframe;
import javax.swing.joptionpane;
import javax.swing.jpanel;

/**
 * 在这个例子中,利用一个actionlistener来监听事件源产生的事件 ,给每个组件建立一个监听
 * 1. 新建一个组件(如jbutton)。
 * 
 * 2. 将该组件添加到相应的面板(如jpanel)。
 * 
 * 3. 注册监听器以监听事件源产生的事件(如通过actionlistener来响应用户点击按钮)。
 * 
 * 4. 定义处理事件的方法(如在actionlistener中的actionperformed中定义相应方法)。
 */

public class actiondemo {
    private static jframe jframe;
    private static jpanel jpanel;
    private jbutton button1;
    private jbutton button2;

    public static void main(string[] args) {
        jframe = new jframe();
        new actiondemo();
        jframe.add(jpanel);
        jframe.pack();// 根据组件大小自适应窗口大小
        jframe.setvisible(true);// 窗口可显示

        // 点击窗口关闭时退出应用程序
        jframe.addwindowlistener(new windowadapter() {
            public void windowclosing() {
                system.exit(0);
            }
        });

    }

    public actiondemo() {
        jpanel = new jpanel();// 实例化面板
        button1 = new jbutton("按钮1");// 实例化按钮
        button2 = new jbutton("按钮2");
        button1.addactionlistener(new but1listener());
        button2.addactionlistener(new but2listener());
        jpanel.add(button1);// 按钮添加到面板
        jpanel.add(button2);

    }
    
    private class but1listener implements actionlistener{

        @override
        public void actionperformed(actionevent e) {
            // todo auto-generated method stub
            joptionpane.showmessagedialog(jframe, "按钮1被点击");
        }
        
    }
    private class but2listener implements actionlistener{

        @override
        public void actionperformed(actionevent e) {
            // todo auto-generated method stub
            joptionpane.showmessagedialog(jframe, "按钮2被点击");
        }
        
    }

}

总结:这几种方式各有优缺,但实际差别不大,具体使用哪种根据程序复杂度以及具体场景而定

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网