java中事件监听器

来源:互联网 发布:阿里云香港主机 编辑:程序博客网 时间:2024/05/28 04:54

【转自】http://blog.sina.com.cn/s/blog_7beb545901019010.html

1.AWT的事件类型及其监听器

(1)WindowEvent窗口事件

引发原因:窗口操作
事件监听接口是WindowListener
接口的方法包括7个:
1)windowActivated(WindowEvent e) //激活窗口
2)windowClosed(WindowEvent e) //调用dispose方法关闭窗口后
3)windowClosing(WindowEvent e) //试图利用窗口关闭框关闭窗口
4)windowDeactivated(WindowEvent e) //本窗口成为非活动窗口
5)windowDeiconified(WindowEvent e) //窗口从最小化恢复为普通窗口
6)windowIconified(WindowEvent e) //窗口变为最小化图标
7)windowOpened(WindowEvent e) //当窗口第一次打开成为可见时
接口适配器: WindowAdapter
注册窗口事件的方法: addWindowListener

(2)ActionEvent活动事件

引发原因: 单击按钮、双击列表框中的选项、选择菜单项、在文本框中回车
事件监听接口: ActionListener
接口方法: actionPerformed(ActionEvent e)
注册事件方法: addActionListener

(3)TextEvent文本事件

引发原因: 文本框或文本区域内容改变
事件监听接口: TextListener
接口方法: textValueChanged(TextEvent e)
注册事件方法: addTextListener

(4)ItemEvent选项事件

引发原因: 改变列表框中的选中项,改变复选框选中状态,改变下拉列表的选中项
事件监听接口: ItemListener
接口方法: itemStateChanged(ItemEvent e)
注册事件方法: addItemListener

(5)AdjustmentEvent调整事件

引发原因: 操作滚动条以身改变滑块位置
事件监听接口: AdjustmentListener
接口方法: adjustmentValueChanged(AdjustmentEvent e)
注册事件方法: addAdjustmentListener

(6)KeyEvent键盘事件

引发原因有三种:
1)按下并释放键
2)按下键
3)释放键
事件监听接口: KeyListener
接口方法包括三种:
1)keyPressed(KeyEvent e) //键已被按下时调用
2)keyReleased(KeyEvent e) //键已被释放时调用
3)keyTyped(KeyEvent e) //键已被按下并释放时调用
KeyEvent方法: char ch = e.getKeyChar();
事件监听适配器(抽象类): KeyAdapter
注册事件方法: addKeyListener

(7) MouseEvent事件

引发原因: 鼠标作用在一个组件上
鼠标事件: 鼠标键按下,鼠标键抬起,单击鼠标键,鼠标指针进入一个组件,鼠标指针离开一个组件
鼠标移动事件: 鼠标移动,鼠标拖动
鼠标事件监听接口1: MouseListener //接受鼠标事件
该接口方法包括三种:
1)mouseClicked(MouseEvent e)
2)mouseEntered(MouseEvent e)
3)mouseExited(MouseEvent e)
鼠标事件监听适配器(抽象类):MouseAdapter
注册鼠标事件方法: addMouseListener

鼠标事件监听接口2: MouseMotionListener
该接口方法:
1)mouseMoved(MouseEvent e)
2)mouseDragged(MouseEvent e)
鼠标移动事件监听适配器: MouseMotionAdapter
注册鼠标移动事件方法: addMouseMotionListener

MouseEvent方法:
1)e.getClickCount() //1为单击,2为双击
2)Point e.getPoint() //取鼠标指针位置
3)int e.getX()和int e.getY()//取鼠标指针位置
e.getMotifiers() = e.BUTTON1_MASK //取标左键
= e.BUTTON3_MASK //取标右键

(8)FocusEvent 焦点事件

引发原因: 组件获得焦点,组件失去焦点
事件监听接口: FocusListener
接口方法:
1)focusGained(FocusEvent e)
2)focusLost(FocusEvent e)
接口适配器:FocusAdapter
注册事件方法: addFocusListener

(9)ComponentEvent组件事件

引发原因: 当组件移动,改变大小,改变面貌可见性时引发
事件监听接口: ComponentListener
接口方法:
1) componentHidden(ComponentEvent e) //组件隐藏
2) componentMoved(ComponentEvent e) //组件移动
3) componentResized(ComponentEvent e) ///组件改变大小
4) componentShown(ComponentEvent e) ///组件变为可见
接口适配器: ComponentAdapter
注册事件方法: addComponentListener

(10) ContainerEvent 容器事件

引发原因: 当容器内增加或移走组件时引发
事件监听接口: ContainerListener
接口方法包括:
1)componentAdded(ContainerEvent e) ///容器内加入组件
2)componentRemoved(ContainerEvent e) //从容器中移走组件
接口适配器: ContainerAdapter
注册该事件方法: addContainerListener

java事件处理机制-事件监听器的实现

在Java的swing编程中,Java中的事件机制非常常用。
事件监听器的参与者:
1.事件对象:
一般继承自java.util.EventObject对象,由开发者自行定义.
2.事件源:
就是触发事件的源头,不同的事件源会触发不同的事件类型.
3.事件监听器:
事件监听器负责监听事件源发出的事件.一个事件监听器通常实现java.util.EventListener这个标识接口.
其整个处理过程是这样的,事件源可以注册事件监听器对象,并可以向事件监听器对象发送事件对象.事件发生后,事件源将事件对象发给已经注册的所有事件监听器.
监听器对象随后会根据事件对象内的相应方法响应这个事件

自身类作为事件监听器 :

import javax.swing.*;import java.awt.*;import java.awt.event.*;/** *Java事件处理机制:自身类作为事件监听器 *@author Winty(wintys@gmail.com)  *@version 2008-12-3 */class 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.*;import java.awt.event.*;import javax.swing.*;/** *Java事件处理机制:外部类作为事件监听器 *@author Winty(wintys@gmail.com)  *@version 2008-12-3 */class OuterClassEvent extends JFrame{     JButton btn;    public OuterClassEvent(){        super("Java事件监听机制");        setLayout(new FlowLayout());        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        btn=new JButton("点击");        btn.addActionListener(new OuterClass(this));        getContentPane().add(btn);        setBounds(200,200,300,160);        setVisible(true);    }    public static void main(String args[]){        new OuterClassEvent();    }} /*外部类*********************************/class OuterClass implements ActionListener{    OuterClassEvent oce;    public OuterClass(OuterClassEvent oce){        this.oce = oce;    }    public void actionPerformed(ActionEvent e){        Container c=oce.getContentPane();        c.setBackground(Color.red);    }}

匿名内部类作为事件监听器 :

import java.awt.*;import java.awt.event.*;import javax.swing.*;/** *Java事件处理机制:匿名内部类作为事件监听器 *@author Winty(wintys@gmail.com)  *@version 2008-12-3 */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.*;/** *Java事件处理机制:内部类作为事件监听器 *@author Winty(wintys@gmail.com)  *@version 2008-12-3 */class 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();    }}
0 0