標籤:java 事件
事件
事件是使用者在介面上的一個操作(通常使用各種輸入裝置,如:滑鼠、鍵盤等來完成)。
當一個事件發生時,該事件用一個事件對象來表示。事件對象有對應的事件類別。不同的事件類別描述不同類型的使用者動作。事件類別包含在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() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO 自動產生的方法存根_jb.setText("我被單擊了");}});// 焦時間點事件_jt.addFocusListener(new FocusListener() {@Overridepublic void focusLost(FocusEvent e) {// TODO 自動產生的方法存根JOptionPane.showMessageDialog(null, "失去焦點");}@Overridepublic void focusGained(FocusEvent e) {// TODO 自動產生的方法存根}});_contentPane.add(_jb);_contentPane.add(_jt);setContentPane(_contentPane);}}
Java 事件監聽器