当一个事件发生时,该事件用一个事件对象来表示。事件对象有对应的事件类。不同的事件类描述不同类型的用户动作。事件类包含在java.awt.event和javax.swing.event包中。
产生事件的组件叫事件源。在一个按钮上单击鼠标时,该按钮就是事件源,会产生一个ActionEvent类型的事件。
事件处理器是一个接收事件对象并进行相应处理的方法。事件处理器包含在一个类中,这个类的对象负责检查事件是否发生,若发生就激活事件处理器进行处理。
事件监听器接口和事件监听器适配器类也都包含在java.awt.event和javax.swing.event包中。
addXxxListener(事件监听器对象)Xxx对应相应的事件类。
示例:
package test1; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.EmptyBorder; public class SimpleActionEvent extends JFrame { private JPanel _contentPane; private JButton _jb; // 动作事件 private JTextField _jt;// 焦点事件 /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { SimpleActionEvent frame = new SimpleActionEvent(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public SimpleActionEvent() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); _contentPane = new JPanel(); _jb = new JButton("我是按钮,单击我"); _jt = new JTextField("请单击其他地方", 10); _contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); _contentPane.setLayout(new FlowLayout()); // 动作事件 _jb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO 自动生成的方法存根 _jb.setText("我被单击了"); } }); // 焦点事件 _jt.addFocusListener(new FocusListener() { @Override public void focusLost(FocusEvent e) { // TODO 自动生成的方法存根 JOptionPane.showMessageDialog(null, "失去焦点"); } @Override public void focusGained(FocusEvent e) { // TODO 自动生成的方法存根 } }); _contentPane.add(_jb); _contentPane.add(_jt); setContentPane(_contentPane); } }
原文地址:http://blog.csdn.net/aoshilang2249/article/details/46129117