【转自】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();
}
}