1. 程式人生 > >AWT事件處理概述

AWT事件處理概述

1.事件

      事件(event)是指一個狀態的改變,或者一個動作的發生,例如單擊一個按鈕,產生單擊事件。

2.事件類

      在JAVA中,用不同的類處理不同的事件,在java.awt.event包中定義了許多事件類,如單擊事件類(ActionEvent)和視窗事件類(WindowEvent)。

3.事件源

       事件由操作元件產生,被操作的元件就是事件源。

4.事件監聽器 

       在圖形介面程式,不僅需要建立元件,而且需要指定元件所能響應的事件,以及該事件發生時要執行的動作(語句序列)。

       (1)為了在事件發生時,事件監聽器能夠接收到通知,需要向事件源中註冊事件監聽器。

               像事件源中新增事件監聽器中要用到addXXXListener(事件監聽器)方法。

       (2)事件處理方法是事件發生時需要執行的方法,java為每個事件類定義了一個事件監聽器介面,其中聲明瞭事件處理的           抽象方法。由於事件監聽器介面中聲名的都是抽象方法,所以在實現時要實現時要實現所有的抽象方法。

5.事件類和監聽器介面

        (1)事件類

                 java定義的多數事件在java.awt.event包中。AWTEvent類是所有事件類的元件,他又繼承了java.util.EventObject             類,而EventObject類又繼承了java.lang.Object類。

        (2)事件監聽器介面

                 java中的每個事件類都有一個監聽器介面,其中聲名了一個或多個事件處理方法。如果一個類實現了事件監聽器接              口,其物件就可以作為對應事件的監聽器。

         AWT中的主要事件類,所對應的事件監聽器介面和介面中宣告的方法如下:

         事件類                            監聽器介面                           監聽器介面中宣告的方法

         ActionEvent                   ActionListener                      actionPerformed(ActionEvent e)


         AdjustmentEvent           AdjustmentListener              adjustmentValueChanged(AdjustmentEvent e)


         ItemEvent                      ItemListener                        itemStateChanged(ItemEvent e)


         KeyEvent                        KeyListener                          KeyTyped(KeyEvent e)

                                                                                          KeyPressed(KeyEvent e)

                                                                                          keyReleased(KeyEvent e)


         MouseEvent                   MouseListener                     mouseClicked(MouseEvent e)

                                                                                          mouseEntered(MouseEvent e)

                                                                                          mouseExited(MouseEvent e)

                                                                                          mousePressed(MouseEvent e)

                                                                                          mouseReleased(MouseEvent e)

                                                                                          mouseDragged(MouseEvent e)

                                                                                          mouseMoved(MouseEvent e)


         TextEvent                       TextListener                         textValueChange(TextEvent e)


         WindowEvent                 WindowListener                   windowActivated(WindowEvent e)

                                                                                           windowClosed(WindowEvent e)

                                                                                           windowClosing(WindowEvent e)

                                                                                           windowDeactivated(WindowEvent e)

                                                                                           windowDeiconified(WindowEvent e)

                                                                                           windowIconified(WindowEvent e)

                                                                                           windowOpened(WindowEvent e)

         AWT中的元件類和可觸發的事件類的對應關係:

         元件類                              產生的事件類                              元件類                       產生的事件類

         Button                             ActionEvent                               TextArea                   TextEvent,KeyEvent,ActionEvent

         CheckBox                        ActionEvent,ItemEvent               TextField                   TextEvent,KeyEvent,ActionEvent

         MenuItem                       ActionEvent                               Window                     WindowEvent

         Scrollbar                          AdjustmentEvent

        (3)事件介面卡類

                因為有的事件監聽器介面中有很多抽象方法,即使只需要處理一個事件,也要實現介面中的所有事件處理方法,這十          分麻煩,所以引入了介面卡(adapt)類,類名帶有Adapter標記,每個介面卡類實現了一個事件監聽器介面,用空方法體實          現該介面中的每個抽象方法,這樣一來,僅需要覆蓋所響應的事件處理方法,不需要用空方法體實現其他方法。

         監聽器介面與介面卡類的對應關係:

         監聽器介面                            介面卡類                               監聽器介面                             介面卡類

         ComponentListener              ComponentAdapter             MouseListener                       MouseAdapter

         ContainerListener                 ContainerAdapter                MouseMotionListener            MouseMotionAdapter

         FocusListener                       FocusAdapt                          WindowListener                     WindowAdapter

         KeyListener                           KeyAdapter

         (4)註冊事件監聽器的方法

          像元件類物件註冊和撤銷事件監聽器的方法

          元件類                                       註冊和撤銷事件監聽器的方法

          Button                                      addActionListener(ActionListener I)

                                                          removeActionListener(ActionListener I)


          Component                              addKeyListener(KeyListener I)

                                                          removeKeyListener(KeyListener I)

                                                          addMouseListener(MouseListener I)

                                                          removeMouseListener(MouseListener I)

                                                          addMouseMotionListener(MouseMotionListener I)

                                                          removeMouseMotionListener(MouseMotionListener I)


          MenuItem                                addActionListener(ActionListener I)

                                                          removeActionListener(ActionListener I)


          TextArea(TextField)                   addActionListener(ActionListener I)

                                                          removeActionListener(ActionListener I)

                                                          addTextEventListener(TextListener I)

                                                          removeTextEventListener(TextListener I)

                                                          addKeyListener(KeyListener I)

                                                          removeKeyListener(KeyListener I)


          Window                                   addWindowListener(WindowListener I)

                                                          removeActionListener(WindowListener I)