事件监听器 java_java事件与监听器

在java开发中,事件的处理非常重要。比如在swing编程里,若要实现当点击按钮、文本框、移动鼠标、按下键盘就执行相应的操作,就要用到事件与监听器。这个过程可以分解为事件源产生某个获某些事件,添加在这个事件源的监听器会自动根据产生的事件做出响应,如下图:事件源

即产生事件的主体,例如,在点击按钮时事件源是按钮,在面板上进行鼠标移动时这个面板就是事件源。事件

事件可以理解为对事件源进行的操作,当执行这个操作的时候,事件源产生相应的事件,对事件源执行不同的操作会产生不同的事件,而监听器会根据不同的事件做出相应的处理。监听器

监听器实际上是实现了特定接口的类。在java中提供了许多对不同的事件处理的接口的,而我们在使用监听器时,就是要根据要监听的事件去实现相应的接口类,对接口的事件处理方法进行重写。在应用时要将监听器对象添加到事件源,一个事件源可以添加多个监听器。在事件产生时,事件源对象会将事件反馈给监听器,调用监听器中重写的方法。

常用的监听器实例:ActionListener(动作监听器)

public interface ActionListener extends EventListener {

public void actionPerformed(ActionEvent e);

}

类中只有一个actionPerformed方法,当点击按钮、文本框输入回车时会执行这个方法。

例:

//画一个窗口,同时在本类中实现监听器接口,重写事件处理方法public class test implements ActionListener{

private JFrame jf;

private JButton jbu1,jbu2;

public test(){

jf = new JFrame();

jf.setSize(300, 200);

jf.setDefaultCloseOperation(3);

jf.setLocationRelativeTo(null);

FlowLayout f=new FlowLayout();

jf.setLayout(f);//设置流式布局 jbu1 = new JButton("按钮1");

jbu2 = new JButton("按钮2");

jbu1.addActionListener(this); //给按钮添加(注册)监听器 jbu2.addActionListener(this); //给按钮添加(注册)监听器 jf.add(jbu1);

jf.add(jbu2);

jf.setVisible(true);

}

public void actionPerformed(ActionEvent e) {

if(e.getSource()==jbu1) System.out.println("按下按钮1");

if(e.getSource()==jbu2) System.out.println("按下按钮2");

}

public static void main(String[] args) {

new test();

}

}MouseListener(鼠标监听器)

//实现监听器,重写监听器方法

public class myMouseListener implements MouseListener {

public void mouseClicked(MouseEvent e){

System.out.println("点击");

}

public void mousePressed(MouseEvent e){

System.out.println("按下");

}

public void mouseReleased(MouseEvent e){

System.out.println("释放");

}

public void mouseEntered(MouseEvent e){

System.out.println("进入");

}

public void mouseExited(MouseEvent e){

System.out.println("离开");

}

}

//事件源与监听器不在同一类中

public class test {

public test(){

JFrame frame=new JFrame();

frame.setSize(600,600);

frame.setDefaultCloseOperation(3);//设置关闭

frame.setLocationRelativeTo(null);//设置居中

FlowLayout f=new FlowLayout();

frame.setLayout(f);//设置流式布局

myMouseListener mml = new myMouseListener();

frame.addMouseListener(mml);

frame.setVisible(true);//设置窗体可见

}

public static void main(String[] args) {

new test();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值