SlideShare una empresa de Scribd logo
1 de 48
Descargar para leer sin conexión
บทท 7
      การจดการกบเหตการณกราฟก
         (GUI Event Handling)

           ผศ.ธนศา เครอไวศยวรรณ
           คณะเทคโนโลย(สารสนเทศ
สถาบ,นเทคโนโลย(พระจอมเกล1าเจ1าค2ณทหารลาดกระบ,ง
ว,ตถ2ประสงค8
 นยามความหมายของเหต2การณ8

 แนะน;าคลาสประเภท Event ท(เก(=ยวข1องก,บเหต2การณ8กราฟ?กต@างๆ
                           =
 แนะน;าอนเตอร8เฟสประเภท Listener ท(=ใช1ในการร,บฟDงเหต2การณ8

 อธบายวธ(การสร1างออปเจEคของคลาสประเภท Event Handler

 อธบายวธ(การจ,ดการก,บเหต2การณ8กราฟ?กหลายๆเหต2การณ8

 แนะน;าคลาสประเภท Event Adapter
เหต2การณ8
 เหต2การณ8 (Event) เปIนสถานการณ8ท(=เกดขJนในขณะร,นโปรแกรม อาทเช@น
                                         K
  การใช1อนพ2ต (เมาส8หรอค(ย8บอร8ด) ตดต@อก,บโปรแกรม GUI
 การเกดเหต2การณ8ในโปรแกรมภาษาจาวาจะเปIนการสร1างออปเจEคของคลาส
  ประเภท Event ชนดต@างๆขJนมาตามประเภทของเหต2การณ8 อาทเช@น
                         K
   •   เม=อเล=อนเมาส8ในเฟรมจะเกดออปเจEคของคลาส MouseEvent ขJKนมา
   •   เม=อป?ดเฟรมจะเกดออปเจEคของคลาส WindowEvent ขJKนมา
   •   เม=อกดป2Mมท(อยN@ในเฟรมจะเกดออปเจEคของคลาส ActionEvent ขJKนมา
                   =
   •   เม=อพมพ8ข1อความใน TextField จะเกดออปเจEคของคลาส KeyEvent ขJKนมา
คลาสประเภท Event
 ออปเจคของคลาสประเภท Event ทเกดขนจะแตกต"างกนตามประเภทของ
  เหตการณ
                                              =
 คลาสประเภท Event ในภาษาจาวาจะส(บทอดจากคลาสท(ช(อ
  EventObject
 คลาสประเภท Event ส*าหรบเหตการณทางกราฟ?กจะส(บทอดจากคลาส
  AWTEvent
 คลาสประเภท Event ส*าหรบเหตการณทางกราฟ?กจะอย,"ในแพคเกจ
  java.awt.event
คลาสประเภท Event           (AWT & Swing)

 คลาสประเภท   Event ส*าหรบเหตการณทางกราฟกจะมอย,"สองกล"มค(อ คลาส
  ในแพคเกจ java.awt.event และ javax.swing.event
 คลาสประเภท Event ทใช.โดยพ(นฐานค(อคลาสในแพคเกจ java.awt.event
 ส"วนประกอบทางกราฟกทงในแพคเกจ AWT และ Swing ต"างกสามารถทจะ
  ใช.คลาสเหล"านนได.
 Java SE ในเวอรชน 1.4ได.มการเพมคลาสประเภท Event และอนเตอรเฟส
  ต"างๆ ทเกยวข.องส*าหรบใช.ใน ออบเจกตของคลาสประเภท Swing มากขน
  โดยคลาสและอนเตอรเฟสเหล"านจะอย,"ในแพคเกจ javax.swing.event
คลาสประเภท Event แพคเกจ java.event.awt
คลาสประเภท Event แพคเกจ javax.event.swing
องคประกอบของ Event
 Event ค(อออปเจคตามประเภทของเหตการณ

 Event Source ค(อส"วนทท*าให.เกดเหตการณ

 Event Handler ค(อออปเจคทจะท*าหน.าทจดการกบเหตการณทเกดขนโดยม
  เมธอดทจะรบออปเจคชนด Event ดงกล"าวและมค*าสงในการจดการกบ
  เหตการณเพ(อโต.ตอบกบผ,.ใช.
AWTEvent

 คลาส AWTEvent     เปIน superclass ของคลาสประเภท Event ส;าหร,บ
  เหต2การณ8ทางด1านกราฟ?ก ซJงจะม(อยN@ทงหมด 14 คลาสคอ ActionEvent,
                             =        ,K
  AdjustmentEvent, ComponentEvent, ItemEvent, InputMethodEvent,
  InvocationEvent, TextEvent, FocusEvent, WindowEvent, InputEvent,
  ContainerEvent, PaintEvent, KeyEvent และ MouseEvent
 คลาส AWTEvent และคลาส ObjectEvent ม(เมธอดท(ส;าค,ญด,งน(K
                                             =
   •   Object getSource() เพ=อเร(ยกดNออปเจEคประเภท Event Source
   •   int getID() เพ=อระบ2ชนดของเหต2การณ8
ActionEvent

 จะถNกสร1างขJนในกรณ(ท(=ม(เหต2การณ8เกดขJKนในโปรแกรม GUI ด,งน(K
              K
    •   เม(อมการคลกเมาสบนป2Mม(Button)
    •   เม(อมการป6อนคย Enter ใน TextField
    •   เม(อมการเล(อกเมน,ใน MenuItem
    •   เม(อมการกด double click ใน List
 เมธอดทส*าคญของคลาส ActionEvent ม(ด,งน(K
    •   String getActionCommand() จะส"งช(อค*าสงทเกดขนจาก ActionEvent
    •   int getModifier() จะส"งสถานะของคย Modifier (คย Alt, Ctrl, Meta และ
        Shift) ทเกดขนจากออปเจEคของคลาส ActionEvent
WindowEvent

 จะถNกสร1างขJนในกรณ(ท(=ม(เหต2การณ8เกดขJKนเปIนออปเจEคของคลาสประเภท
              K
  Window มร,ปแบบต"างๆดงน
   •   opened
   •   closed
   •   closing
   •   iconified
   •   deiconified
   •   activated
   •   deactivated
 เมธอดทส*าคญของคลาส WindowEvent ม(ด,งน(K
   •   Object getWindow() จะส"งออปเจคทเป8น   Event Source ชนด Window ค(นมา
MouseEvent

 จะถNกสร1างขJนในกรณ(ท(=ม(การใช1งานเมาส8เพ=อตดต@อก,บผN1ใช1โดยม(เหต2การณ8ท(=
              K
  เกดขJนได1ด,งน(K
       K
    •   dragged
    •   moved
    •   clicked
    •   entered
    •   exited
    •   pressed
    •   released
MouseEvent

 เมธอดทส*าคญของคลาส MouseEvent มด,งน(K
   •   int getX() จะส"งต*าแหน"งพกดของเมาสแกน X ทม(ชนดข1อมNลเปIน int ค(นมา
   •   int getY() จะส"งต*าแหน"งพกดของเมาสแกน Y ทม(ชนดข1อมNลเปIน int ค(นมา
   •   Point getPoint() จะส"งต*าแหน"งพก,ด (x,y) ของเมาสคนมา โดยม(ชนดข1อมNล
                เปIนออปเจEคของคลาส Point
   •   int getClickCount() จะส"งจ*านวนครงของการคลกเมาสคนมา
ItemEvent

 จะถNกสร1างขJนในกรณ(ท(=ม(เหต2การณ8เกดขJKนในโปรแกรม GUI ด,งน(K
              K
    •   เม(อมการเล(อกหร(อยกเลกรายการใน List หร(อ Checkbox
    •   เม(อมการคลกเมาสรายการใน Choice
 เมธอดทส*าคญของคลาส ItemEvent ม(ด,งน(K
    •   ItemSelectable getItemSelectable() จะส"งออปเจคของคลาสประเภท
                        ItemSelectable ทเป8น Event Source ค(นมา
    •   Object getItem() จะส"งออปเจEคของรายการทถ,กเล(อกค(นมา
    •   int getStateChange() จะส@งค@าคงท(ชนด int ท(=ม(ค@าเปIน SELECTED หรอ
                                         =
                 DESELECTED เพ=อระบ2สถานการณ8เลอกของรายการคนมา
Event อ(นๆ

   KeyEvent   เป8นคลาสทมการสร.างออปเจคเม(อมเหตการณการกดคยบอรด
   FocusEvent เป8นคลาสทมการสร.างออปเจคเม(อผ,.ใช.เล(อนอปกรณอนพต
    มาชยงออปเจคของส"วนประกอบกราฟกใดๆ
   ComponentEvent เป8นคลาสทมการสร.างออปเจคเม(อมเหตการณซง
  ออปเจคของส"วนประกอบกราฟกมการเปลยนแปลงเช"น เคล(อนทหร(อปรบ
  ขนาด
 ContainerEvent เป8นคลาสทมการสร.างออปเจคเม(อมเหตการณในการ

  ใส"หร(อยกเลกออปเจคของส"วนประกอบกราฟกลงในออปเจคของคลาส
  ประเภท Container
Event อ(นๆ

   AdjustmentEvent เป8นคลาสทมการสร.างออปเจคเม(อมเหตการณในการ
  ปรบต*าแหน"งชของออปเจคของคลาส ScrollBar หร(อ ScrollPane
 TextEvent เป8นคลาสทมการสร.างออปเจคเม(อมเหตการณในการ

  เปลยนแปลงข.อความในออปเจคของคลาส TextArea
อนเตอร8เฟสประเภท Listener
 ภาษาจาวาจะจ,ดการก,บเหต2การณ8โดยการสร1างออปเจEคท(สามารถร,บฟDง
                                                  =
  เหต2การณ8จากคลาสท(= implements อนเตอร8เฟสประเภท Listener ท(=
  สอดคล1องก,น
 ออปเจEคน(จะท;าหน1าท(=เปIน Event Handler
           K
 อาทเช@น ออปเจEคท(=จะจ,ดการก,บเหต2การณ8ประเภท ActionEvent จะต1อง
  implements อนเตอร8เฟส ActionListener
อนเตอร8เฟสประเภท Listener
   ActionListener เปIนอนเตอร8เฟสส;าหร,บออปเจEคของคลาส
    ActionEvent
   AdjustmentListener เปIนอนเตอร8เฟสส;าหร,บออปเจEคของคลาส
    AdjustmentEvent
   ComponentListener เปIนอนเตอร8เฟสส;าหร,บออปเจEคของคลาส
    ComponentEvent
   ContainerListener เปIนอนเตอร8เฟสส;าหร,บออปเจEคของคลาส
    ContainerEvent
   FocusListener เปIนอนเตอร8เฟสส;าหร,บออปเจEคของคลาส
    FocusEvent
   InputMethodListener เปIนอนเตอร8เฟสส;าหร,บอEอบเจกต8ของคลาส
    InputMethodEvent
อนเตอร8เฟสประเภท Listener
   ItemListener เปIนอนเตอร8เฟสส;าหร,บออปเจEคของคลาส ItemEvent
   KeyListener เปIนอนเตอร8เฟสส;าหร,บออปเจEคของคลาส KeyEvent
   MouseListener เปIนอนเตอร8เฟสส;าหร,บออปเจEคของคลาส
    MouseEvent
   MouseMotionListener เปIนอนเตอร8เฟสส;าหร,บออปเจEคของคลาส
    MouseEvent
   TextListener เปIนอนเตอร8เฟสส;าหร,บอEอบเจกต8ของคลาส TextEvent
   WindowListener เปIนอนเตอร8เฟสส;าหร,บอEอบเจกต8ของคลาส WindowEvent
   AWTEventListener เปIนอนเตอร8เฟสส;าหร,บให1เราสามารถท(=จะไปพ,ฒนาคลาสประเภท
    EventListener ได1
เมธอดท(=ใช1ร,บฟDงเหต2การณ8
 อนเตอร8เฟส             เมธอดท(ใช1รบฟDงเหต2การณ8
                               = ,
ActionListener        addActionListener()
ItemListener          addItemListener()
KeyListener           addKeyListener()
MouseListener         addMouseListener()
MouseMotionListener   addMouseMotionListener()
TextListener          addTextListener()
FocusListener         addFocusListener()
AdjustmentListener    addAdjustmentListener()
เมธอดท(=ใช1ร,บฟDงเหต2การณ8

 อนเตอร8เฟส            เมธอดท(ใช1รบฟDงเหต2การณ8
                              = ,
ComponentListener    addComponentListener()
ContainerListener    addContainerListener()
WindowListener       addWindowListener()
เมธอดท(=ต1องลงทะเบ(ยนเม=อต1องการจ,ดการก,บเหต2การณ8
  อนเตอร8เฟส            เมธอดท(=ตอง implements
                                 1
                       keyPressed(KeyEvent)
 KeyListener           keyReleased(KeyEvent)
                       keyTyped(KeyEvent)
                       focusGained(FocusEvent)
 FocusListener
                       focusLost(FocusEvent)
                       adjustmentValueChanged
 AdjustmentListener
                       (AdjustmentEvent)
                       componentMoved(ComponentEvent)
                       componentHidden(ComponentEvent)
 ComponentListener
                       componentResized(ComponentEvent)
                       componentShown(ComponentEvent)
เมธอดท(=ตอง implements
                       1
 อนเตอร8เฟส              เมธอดท(ต1อง implements
                                =
ActionListener         actionPerformed(ActionEvent)

ItemListener           itemStateChanged(ItemEvent)

                       mouseClicked(MouseEvent)
                       mouseEntered(MouseEvent)
MouseListener          mouseExited(MouseEvent)
                       mousePressed(MouseEvent)
                       mouseReleased(MouseEvent)

                       mouseMoved(MouseEvent)
MouseMotionListener
                       mouseDragged(MouseEvent)
เมธอดท(=ตอง implements
                       1
 อนเตอร8เฟส             เมธอดท(=ตอง implements
                                 1
                       keyPressed(KeyEvent)
KeyListener            keyReleased(KeyEvent)
                       keyTyped(KeyEvent)
                       focusGained(FocusEvent)
FocusListener
                       focusLost(FocusEvent)
                       adjustmentValueChanged
AdjustmentListener
                       (AdjustmentEvent)
                       componentMoved(ComponentEvent)
                       componentHidden(ComponentEvent)
ComponentListener
                       componentResized(ComponentEvent)
                       componentShown(ComponentEvent)
เมธอดท(=ตอง implements
                       1
 อนเตอร8เฟส             เมธอดท(=ตอง implements
                                 1
                       windowOpened(WindowEvent)
                       windowClosed(WindowEvent)
                       windowClosing(WindowEvent)
WindowListener         windowIconified(WindowEvent)
                       windowDeiconified(WindowEvent)
                       windowActivated(WindowEvent)
                       windowDeactivated(WindowEvent)

                       componentAdded(ContainerEvent)
ContainerListener
                       componentRemoved(ContainerEvent)
TextListener           textValueChanged(TextEvent)
การจ,ดการก,บเหต2การณ8
 ภาษาจาวาจะม(วธ(การจ,ดการก,บเหต2การณ8ทเร(ยกว@า Delegation Model โดย
                                       (=
  จะม(หล,กการด,งน(K
   •   ออปเจEคของส@วนประกอบกราฟ?กใดๆสามารถเปIนออปเจEคประเภท Event Source
       ได1 อาทเช@น ออปเจEคของคลาส Button สามารถเปIน Event Source ของ
       ActionEvent ได1
   •   คลาสใดๆสามารถร,บฟDงเหต2การณ8ใดๆกEได1 ถ1าคลาสน,Kน implements
       อนเตอร8เฟสประเภท Listener ท(สอดคล1องก,นอาทเช@น คลาสท(=ตองการร,บฟDง
                                     =                          1
       เหต2การณ8 ActionEvent จะต1อง implements อนเตอร8เฟสท(ช=อ=
     ActionListener
   • ออปเจEคประเภท Event ท(เกดจาก Event Source จะถNกส@งไปย,งออปเจEคของคลาสท(=
                           =
       สามารถร,บฟDงเหต2การณ8ประเภทน,Kน
ออปเจคของคลาสประเภท Event Handler
 Event Source ใดต1องการท(=จะจ,ดการก,บเหต2การณ8ใดต1องลงทะเบ(ยนเพ=อร,บ
  ฟDงเหต2การณ8โดยม(รปแบบด,งน(K
                    N
            eventSource.addXxxListener(listener)

 เราสามารถสร1างออปเจคของคลาสประเภท          Event Handler ได.หลายร,ป
  แบบดงน
   •   ก;าหนดคลาสภายนอกคลาสท(ใช1ในการจ,ดการเหต2การณ8
                                 =
   •   ก;าหนดคลาสท(=เปIนคลาสภายในอยN@ในคลาสท(ใช1ในการจ,ดการเหต2การณ8
                                              =
   •   ก;าหนดให1คลาสท(ใช1ในการจ,ดการเหต2การณ8 implements อนเตอร8เฟสประเภท
                       =
       Listener ท(สอดคล1องก,น และสร1างออปเจEคของคลาสด,งกล@าวภายในคลาสเอง
                   =
   •   ก;าหนดคลาสภายในเมธอด (คลาสประเภท anonymous)
ตวอย"างโปรแกรมสร.างออบเจกตของคลาสภายนอก
import java.awt.FlowLayout;
import javax.swing.*;


public class EventDemo1 {
    public void init() {
        JFrame fr = new JFrame("Outer Class Event Demo");
        fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JButton bn1 = new JButton("Exit");
        fr.setLayout(new FlowLayout());
        bn1.addActionListener(new ActionHandler());
        fr.add(bn1);
        fr.setSize(200, 200);
        fr.setVisible(true);
    }
    public static void main(String[] args) {
        EventDemo1 obj = new EventDemo1();
        obj.init();
    }
}
ตวอย"างโปรแกรมสร.างออบเจกตของคลาสภายนอก
public class ActionHandler implements ActionListener {
    public void actionPerformed(ActionEvent ev) {
        System.exit(0);
    }
}




                    ผลล,พธ8ทได1จากการร,นโปรแกรม
                            (=
ค*าอธบายโปรแกรม
 คลาส EventDemo1 มป:มทช(อ bn1 ซงลงทะเบยนรบฟ;งเหตการณประเภท
  ActionEvent   จากค*าสง
      bn1.addActionListener(new ActionHandler());

 ค*าสง new ActionHandler()เป8นการสร.างออปเจคทใช.ในการจดการกบ
  เหตการณประเภท ActionEvent
 คลาส ActionHandler จะต.อง implements อนเตอรเฟสช(อ
  ActionListener

 เมธอดทต.อง implements    ในคลาสค(อ
      public void actionPerformed(ActionEvent ev)
ตวอย"างโปรแกรมการสร.างออบเจกตของคลาสภายใน
  import java.awt.*;
  import java.awt.event.*;
  import javax.swing.*;


  public class EventDemo2 {
      private JFrame fr;
      private JTextField tf;


      public void init() {
          fr = new JFrame("Same Class Event Demo");
          fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          tf = new JTextField(15);
          fr.setLayout(new FlowLayout());
          fr.add(tf);
          tf.setFont(new Font("TimesRoman", Font.BOLD, 16));
          fr.addMouseMotionListener(new MouseHandler());
          fr.setSize(200, 200);
          fr.setVisible(true);
      }
ตวอย"างโปรแกรมการสร.างออบเจกตของคลาสภายใน
   public class MouseHandler implements MouseMotionListener {


          public void mouseDragged(MouseEvent ev) {
              tf.setText("X=" + ev.getX() + " Y=" + ev.getY());
          }


          public void mouseMoved(MouseEvent ev) {
          }
      }


      public static void main(String[] args) {
          EventDemo2 obj = new EventDemo2();
          obj.init();



                 ผลล,พธ8ทได1จากการร,นโปรแกรม
                         (=
      }
  }
ค;าอธบายโปรแกรม
 ตวอย"างโปรแกรม   EventDemo2 มการขนทะเบยนออปเจคของคลาส
  Frame เพ=อร,บฟDงเหต2การณ8 MouseEvent จากค*าสง
     fr.addMouseMotionListener(new MouseHandler());

 โปรแกรมนจะแสดงต*าแหน"งของเมาสเม(อมการเล(อนเมาส
 คลาส MouseHandler เป8นคลาสภายใน    ท;าให1สามารถเร(ยกใช1ค2ณล,กษณะ
  ของคลาส EventDemo2 ได. เช"นออปเจค tf ของคลาส TextField
ตวอย"างแสดงการสร1างออปเจEคภายในคลาสเด(ยวก,น
  import java.awt.event.*;
  import javax.swing.JFrame;


  public class EventDemo3 implements WindowListener{
      public void init() {
          JFrame fr = new JFrame("Same Class Event Demo");
          fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          fr.addWindowListener(this);
          fr.setSize(200, 200);
          fr.setVisible(true);
      }
      public void windowClosing(WindowEvent ev) {
          System.exit(0);
      }
      public void windowOpened(WindowEvent ev) {}
      public void windowClosed(WindowEvent ev) {}
      public void windowIconified(WindowEvent ev) {}
      public void windowDeiconified(WindowEvent ev) {}
ตวอย"างแสดงการสร1างออปเจEคภายในคลาสเด(ยวก,น
 public void windowActivated(WindowEvent ev) {}
     public void windowDeactivated(WindowEvent ev) {}


     public static void main(String[] args) {
         EventDemo3 obj = new EventDemo3();
         obj.init();
     }
 }



            ผลล,พธ8ท(=ได1จากการร,นโปรแกรม
ค;าอธบายโปรแกรม
   this หมายถJงออปเจEคของคลาสเดยวกน
 ตวอย"างโปรแกรมใช.ออปเจค this ในการจดการก,บ WindowEvent      จาก
    ค;าสง
       fr.addWindowListener(this);
 คลาส EventDemo3 ต.อง implements อนเตอรเฟส WindowListener

 ค*าสง System.exit(0); ในเมธอด windowClosing()ท;าให1สามารถ
    ออกจากโปรแกรมได.โดยการคลกเมาส8ท(=เคร=องหมายกากบาทตรง Title Bar
การรบฟ;งเหตการณหลายเหต2การณ8
 Event Source สามารถทจะขนทะเบยนรบฟ;งเหตการณหลายประเภทได. เช@น
   •   fr.addMouseMotionListener(this);
   •   fr.addWindowListener(this);

 คลาสใดๆสามารถ implements อนเตอรเฟสหลายตวได. เช"น
   •   public class EventDemo4 implements MouseMotionListener,
                             WindowListener

 Event Handler สามารถทจะจดการกบ
                              Event Source ได.หลายตวและ
  ออปเจคของคลาสประเภท Event จะมเมธอดในการทจะแยก Event
  Source ได.
ตวอย"างโปรแกรมทลงทะเบยนรบฟ;งเหตการณสองชนด
 import java.awt.*;
 import java.awt.event.*;
 import javax.swing.*;


 public class EventDemo4 implements MouseMotionListener, WindowListener {
     private JFrame fr;
     private JTextField tf;
     public void init() {
         fr = new JFrame("Multiple Event Demo");
         tf = new JTextField(15);
         fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         fr.setLayout(new FlowLayout());
         fr.add(tf);
         tf.setFont(new Font("TimesRoman", Font.BOLD, 16));
         fr.addMouseMotionListener(this);
         fr.addWindowListener(this);
         fr.setSize(200, 200);
         fr.setVisible(true);
     }
ตวอย"างโปรแกรมทลงทะเบยนรบฟ;งเหตการณสองชนด
 public void mouseDragged(MouseEvent ev) {
         tf.setText("X=" + ev.getX() + " Y=" + ev.getY());
     }


     public void mouseMoved(MouseEvent ev) { }
     public void windowClosing(WindowEvent ev) {
         System.exit(0);
     }
     public void windowOpened(WindowEvent ev) { }

                                                         ผลล,พธ8ท(=ได1จากการร,นโปรแกรม
     public void windowClosed(WindowEvent ev) { }
     public void windowIconified(WindowEvent ev) { }
     public void windowDeiconified(WindowEvent ev) { }
     public void windowActivated(WindowEvent ev) { }
     public void windowDeactivated(WindowEvent ev) { }


     public static void main(String[] args) {
         EventDemo4 obj = new EventDemo4();
         obj.init();
     }
 }
คลาสประเภท Event Adapter
 คลาสประเภท Event Adapter ค(อคลาสทได1 implements อนเตอรเฟส
  ประเภท Listener ไว1แล.ว
 คลาสประเภท   Event Adapter นน ได1ก;าหนดเมธอดต"างๆของอนเตอรเฟสท
  ต.องเขยนไว1แล1ว แต@จะเปIนบลEอกค;าส,งท(=ไม@ม(ค;าส,งใดๆอยN@ภายในบลEอก
                                     =             =
 คลาสประเภท Event Adapter จะช@วยท*าให.เขยนโปรแกรมท(=เปIนคลาส
  ประเภท Event Handler ได.ง"ายขJKนโดยลดจ;านวนเมธอดท(=จะต1องเข(ยนบลEอก
  ค;าส,=ง
คลาสประเภท Event Adapter
 คลาสประเภท    Event Adapter มดงน
   •   MouseAdapter ค(อคลาสท implements อนเตอรเฟสทช(อ MouseListener
   •   MouseMotionAdapter ค(อคลาสท implements อนเตอรเฟสทช(อ
       MouseMotionListener
   •   ComponentAdapter ค(อคลาสท implements อนเตอรเฟสทช(อ
       ComponentListener
   •   ContainerAdapter ค(อคลาสท implements อนเตอรเฟสทช(อ
       ContainerListener
   •   KeyAdapter ค(อคลาสท implements อนเตอรเฟสทช(อ KeyListener
   •   WindowAdapter ค(อคลาสท implements อนเตอรเฟสทช(อ
       WindowListener
   •   FocusAdapter ค(อคลาสท implements อนเตอรเฟสทช(อ FocusListener
ต,วอย@างโปรแกรมคลาสประเภท Event Adapter
import javax.swing.JFrame;


public class EventDemo5 {


    public void init() {
        JFrame fr = new JFrame("Adapter Class Event Demo");
        fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        fr.addWindowListener(new WindowHandler());
        fr.setSize(200, 200);
        fr.setVisible(true);
    }


    public static void main(String[] args) {
        EventDemo5 obj = new EventDemo5();
        obj.init();
    }
}
ต,วอย@างโปรแกรมคลาสประเภท Event Adapter
import java.awt.event.*;


public class WindowHandler extends WindowAdapter {
    public void windowClosing(WindowEvent ev) {
        System.exit(0);
    }
}
การสร1างคลาสแบบ anonymous
 เราสามารถก*าหนดคลาสทงหมดให.อย,"ภายในเมธอดทเรยกใช.งาน

 คลาสประเภทนเรยกว"าคลาสประเภท anonymous
 คลาสประเภท anonymous นยมใช.ในการจดการก,บ Event เช"น การปด
  Frame
ต,วอย@างโปรแกรมคลาสแบบ anonymous
import java.awt.event.*;
import javax.swing.JFrame;


public class EventDemo6 {
    public void init() {
        JFrame fr = new JFrame("Anonymous Class Event Demo");
        fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        fr.addWindowListener(new WindowAdapter() {
              public void windowClosing(WindowEvent ev) {
                  System.exit(0);
              }
        });
        fr.setSize(200, 200);
        fr.setVisible(true);
    }
    public static void main(String[] args) {
        EventDemo6 obj = new EventDemo6();
        obj.init();
    }
}
สร2ปเนKอหาของบท
 ออปเจEคของคลาสประเภท Event ในแพจเกEจ java.awt.event จะถNก
  สร1างขJKนเม=อม(การกระท;าบางอย@างเกดขJนก,บต,วใส@ส@วนประกอบหรอส@วน
                                       K
  ประกอบกราฟ?ก เช@น ActionEvent เกดขJKนเม=อม(การกด Button หรอ
  WindowEvent เกดขJKนเม=อม(การป?ด Frame
 การจะจ,ดการก,บ Event ประเภทใดน,Kน โดยท,=วไปจะต1องสร1างออปเจEคของ
  คลาสท(= implements อนเตอร8เฟสท(สอดคล1องก,นก,บ Event น,นด1วย เช@น
                                 =                      K
  ถ1าต1องการจ,ดการก,บ WindowEvent จะต1องสร1างออปเจEคของคลาสท(=
  implements อนเตอร8เฟส WindowListener โดยการสร1างออปเจEคอาจ
  สร1างจากคลาสภายนอก คลาสภายใน คลาสเด(ยวก,น หรอคลาสประเภท
  anonymous ซJงคลาสประเภทน(KจะถNกเร(ยกว@าคลาสประเภท Event Handler
               =
สร2ปเนKอหาของบท
 คลาสใดๆสามารถ implements อนเตอร8เฟสได1หลายต,ว ท;าให1สามารถท(=
  จะขJKนทะเบ(ยนร,บฟDงเหต2การณ8ได1หลายเหต2การณ8
 คลาสประเภท Event Adapter ค(อคลาสทได1 implements อนเตอรเฟส
  ประเภท Listener ไว1แล.ว โดยได1ก;าหนดเมธอดต"างๆของอนเตอรเฟสท
  ต.องเขยนไว1แล1ว แต@จะเปIนบลEอกค;าส,งท(=ไม@ม(ค;าส,งใดๆอยN@ภายในบลEอก
                                     =             =
แบบฝrกห,ด
 ข1อท(= 1
    •   ทดลองเข(ยนโปรแกรมจ,ดการเหต2การณ8เพ=อท;าให1โปรแกรม GUI ในแบบฝrกห,ดบทท(=
        6 ให1สามารถท;างานได1อย@างถNกต1อง

Más contenido relacionado

La actualidad más candente

Java Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and CollectionJava Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and CollectionIMC Institute
 
Java-Answer Chapter 05-06 (For Print)
Java-Answer Chapter 05-06 (For Print)Java-Answer Chapter 05-06 (For Print)
Java-Answer Chapter 05-06 (For Print)Wongyos Keardsri
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาพื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาSarocha Makranit
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาพื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาJK133
 
Php เงื่อนไขต่างๆ
Php เงื่อนไขต่างๆPhp เงื่อนไขต่างๆ
Php เงื่อนไขต่างๆJaemjan Sriarunrasmee
 
ความรู้เบื้องต้นภาษาจาวา
ความรู้เบื้องต้นภาษาจาวาความรู้เบื้องต้นภาษาจาวา
ความรู้เบื้องต้นภาษาจาวาThanachart Numnonda
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาพื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาAeew Autaporn
 
Java-Answer Chapter 12-13 (For Print)
Java-Answer Chapter 12-13 (For Print)Java-Answer Chapter 12-13 (For Print)
Java-Answer Chapter 12-13 (For Print)Wongyos Keardsri
 
บทที่2
บทที่2บทที่2
บทที่2tyt13
 
Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์
Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์
Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์Thanachart Numnonda
 
Java-Chapter 01 Introduction to Java Programming
Java-Chapter 01 Introduction to Java ProgrammingJava-Chapter 01 Introduction to Java Programming
Java-Chapter 01 Introduction to Java ProgrammingWongyos Keardsri
 
Java-Answer Chapter 01-04 (For Print)
Java-Answer Chapter 01-04 (For Print)Java-Answer Chapter 01-04 (For Print)
Java-Answer Chapter 01-04 (For Print)Wongyos Keardsri
 
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์Thanachart Numnonda
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นFinian Nian
 
บทที่ 5 คลาส
บทที่ 5 คลาสบทที่ 5 คลาส
บทที่ 5 คลาสTheeravaj Tum
 

La actualidad más candente (20)

Java Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and CollectionJava Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and Collection
 
Java-Answer Chapter 05-06 (For Print)
Java-Answer Chapter 05-06 (For Print)Java-Answer Chapter 05-06 (For Print)
Java-Answer Chapter 05-06 (For Print)
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาพื้นฐานภาษาจาวา
พื้นฐานภาษาจาวา
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาพื้นฐานภาษาจาวา
พื้นฐานภาษาจาวา
 
Php เงื่อนไขต่างๆ
Php เงื่อนไขต่างๆPhp เงื่อนไขต่างๆ
Php เงื่อนไขต่างๆ
 
ความรู้เบื้องต้นภาษาจาวา
ความรู้เบื้องต้นภาษาจาวาความรู้เบื้องต้นภาษาจาวา
ความรู้เบื้องต้นภาษาจาวา
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาพื้นฐานภาษาจาวา
พื้นฐานภาษาจาวา
 
Java-Answer Chapter 12-13 (For Print)
Java-Answer Chapter 12-13 (For Print)Java-Answer Chapter 12-13 (For Print)
Java-Answer Chapter 12-13 (For Print)
 
บทที่2
บทที่2บทที่2
บทที่2
 
Computer Programming 2.2
Computer Programming 2.2Computer Programming 2.2
Computer Programming 2.2
 
Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์
Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์
Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์
 
Lesson3
Lesson3Lesson3
Lesson3
 
Computer Programming 2.1
Computer Programming 2.1Computer Programming 2.1
Computer Programming 2.1
 
Java-Chapter 01 Introduction to Java Programming
Java-Chapter 01 Introduction to Java ProgrammingJava-Chapter 01 Introduction to Java Programming
Java-Chapter 01 Introduction to Java Programming
 
Java-Answer Chapter 01-04 (For Print)
Java-Answer Chapter 01-04 (For Print)Java-Answer Chapter 01-04 (For Print)
Java-Answer Chapter 01-04 (For Print)
 
01 intro php
01 intro php01 intro php
01 intro php
 
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
 
02 basic
02 basic02 basic
02 basic
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
 
บทที่ 5 คลาส
บทที่ 5 คลาสบทที่ 5 คลาส
บทที่ 5 คลาส
 

Destacado

Java Programming [1/12] : Introduction
Java Programming [1/12] : IntroductionJava Programming [1/12] : Introduction
Java Programming [1/12] : IntroductionIMC Institute
 
Java Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented ConceptJava Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented ConceptIMC Institute
 
บทที่ 3 พื้นฐานภาษา Java
บทที่ 3 พื้นฐานภาษา Javaบทที่ 3 พื้นฐานภาษา Java
บทที่ 3 พื้นฐานภาษา JavaItslvle Parin
 
พื้นฐานโปรแกรมภาษาจาวา
พื้นฐานโปรแกรมภาษาจาวาพื้นฐานโปรแกรมภาษาจาวา
พื้นฐานโปรแกรมภาษาจาวาThanachart Numnonda
 

Destacado (6)

Java Programming [1/12] : Introduction
Java Programming [1/12] : IntroductionJava Programming [1/12] : Introduction
Java Programming [1/12] : Introduction
 
Planning on Mobile Strategy
Planning on Mobile StrategyPlanning on Mobile Strategy
Planning on Mobile Strategy
 
Java AWT
Java AWTJava AWT
Java AWT
 
Java Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented ConceptJava Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented Concept
 
บทที่ 3 พื้นฐานภาษา Java
บทที่ 3 พื้นฐานภาษา Javaบทที่ 3 พื้นฐานภาษา Java
บทที่ 3 พื้นฐานภาษา Java
 
พื้นฐานโปรแกรมภาษาจาวา
พื้นฐานโปรแกรมภาษาจาวาพื้นฐานโปรแกรมภาษาจาวา
พื้นฐานโปรแกรมภาษาจาวา
 

Más de Thanachart Numnonda

Thailand Digital Industry Survey Result 2021
Thailand Digital Industry Survey Result 2021Thailand Digital Industry Survey Result 2021
Thailand Digital Industry Survey Result 2021Thanachart Numnonda
 
ประวัติ (ศาสตร์) อันแสนสุขของ แถมสุข
ประวัติ (ศาสตร์) อันแสนสุขของ แถมสุขประวัติ (ศาสตร์) อันแสนสุขของ แถมสุข
ประวัติ (ศาสตร์) อันแสนสุขของ แถมสุขThanachart Numnonda
 
ข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทย
ข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทยข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทย
ข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทยThanachart Numnonda
 
Software Trends Towards AEC 2015
Software Trends Towards AEC 2015Software Trends Towards AEC 2015
Software Trends Towards AEC 2015Thanachart Numnonda
 
How would cloud computing Effect to Software Industry?
How would cloud computing  Effect to Software Industry?How would cloud computing  Effect to Software Industry?
How would cloud computing Effect to Software Industry?Thanachart Numnonda
 
Impact of cloud computing to Asian IT Industry
Impact of cloud computing  to Asian IT IndustryImpact of cloud computing  to Asian IT Industry
Impact of cloud computing to Asian IT IndustryThanachart Numnonda
 
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่Thanachart Numnonda
 
รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]
รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]
รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]Thanachart Numnonda
 
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่Thanachart Numnonda
 
ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย
ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย
ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย Thanachart Numnonda
 
Cloud Computing กับการใช้งานในองค์กรต่างๆ
Cloud Computing กับการใช้งานในองค์กรต่างๆCloud Computing กับการใช้งานในองค์กรต่างๆ
Cloud Computing กับการใช้งานในองค์กรต่างๆThanachart Numnonda
 
3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทย
3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทย3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทย
3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทยThanachart Numnonda
 
บทความ Google vs. Android
บทความ Google vs. Android  บทความ Google vs. Android
บทความ Google vs. Android Thanachart Numnonda
 
Technology Trends & The Impact for Software Industry
Technology Trends & The Impact for Software IndustryTechnology Trends & The Impact for Software Industry
Technology Trends & The Impact for Software IndustryThanachart Numnonda
 
อยากอยู่ 110 ปี
อยากอยู่ 110 ปี อยากอยู่ 110 ปี
อยากอยู่ 110 ปี Thanachart Numnonda
 
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)Thanachart Numnonda
 
Government 2.0 กับการเปลี่ยนแปลงองค์กร
Government 2.0 กับการเปลี่ยนแปลงองค์กรGovernment 2.0 กับการเปลี่ยนแปลงองค์กร
Government 2.0 กับการเปลี่ยนแปลงองค์กรThanachart Numnonda
 

Más de Thanachart Numnonda (20)

Thailand Digital Industry Survey Result 2021
Thailand Digital Industry Survey Result 2021Thailand Digital Industry Survey Result 2021
Thailand Digital Industry Survey Result 2021
 
ประวัติ (ศาสตร์) อันแสนสุขของ แถมสุข
ประวัติ (ศาสตร์) อันแสนสุขของ แถมสุขประวัติ (ศาสตร์) อันแสนสุขของ แถมสุข
ประวัติ (ศาสตร์) อันแสนสุขของ แถมสุข
 
ข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทย
ข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทยข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทย
ข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทย
 
Software Trends Towards AEC 2015
Software Trends Towards AEC 2015Software Trends Towards AEC 2015
Software Trends Towards AEC 2015
 
Personal Cloud
Personal CloudPersonal Cloud
Personal Cloud
 
How would cloud computing Effect to Software Industry?
How would cloud computing  Effect to Software Industry?How would cloud computing  Effect to Software Industry?
How would cloud computing Effect to Software Industry?
 
Impact of cloud computing to Asian IT Industry
Impact of cloud computing  to Asian IT IndustryImpact of cloud computing  to Asian IT Industry
Impact of cloud computing to Asian IT Industry
 
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
 
รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]
รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]
รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]
 
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
 
ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย
ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย
ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย
 
Cloud Computing กับการใช้งานในองค์กรต่างๆ
Cloud Computing กับการใช้งานในองค์กรต่างๆCloud Computing กับการใช้งานในองค์กรต่างๆ
Cloud Computing กับการใช้งานในองค์กรต่างๆ
 
3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทย
3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทย3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทย
3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทย
 
บทความ Google vs. Android
บทความ Google vs. Android  บทความ Google vs. Android
บทความ Google vs. Android
 
IT trends for co-creation
IT trends for co-creationIT trends for co-creation
IT trends for co-creation
 
Technology Trends & The Impact for Software Industry
Technology Trends & The Impact for Software IndustryTechnology Trends & The Impact for Software Industry
Technology Trends & The Impact for Software Industry
 
อยากอยู่ 110 ปี
อยากอยู่ 110 ปี อยากอยู่ 110 ปี
อยากอยู่ 110 ปี
 
Open
OpenOpen
Open
 
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
 
Government 2.0 กับการเปลี่ยนแปลงองค์กร
Government 2.0 กับการเปลี่ยนแปลงองค์กรGovernment 2.0 กับการเปลี่ยนแปลงองค์กร
Government 2.0 กับการเปลี่ยนแปลงองค์กร
 

Java Programming: การจัดการกับเหตุการณ์กราฟิก

  • 1. บทท 7 การจดการกบเหตการณกราฟก (GUI Event Handling) ผศ.ธนศา เครอไวศยวรรณ คณะเทคโนโลย(สารสนเทศ สถาบ,นเทคโนโลย(พระจอมเกล1าเจ1าค2ณทหารลาดกระบ,ง
  • 2. ว,ตถ2ประสงค8  นยามความหมายของเหต2การณ8  แนะน;าคลาสประเภท Event ท(เก(=ยวข1องก,บเหต2การณ8กราฟ?กต@างๆ =  แนะน;าอนเตอร8เฟสประเภท Listener ท(=ใช1ในการร,บฟDงเหต2การณ8  อธบายวธ(การสร1างออปเจEคของคลาสประเภท Event Handler  อธบายวธ(การจ,ดการก,บเหต2การณ8กราฟ?กหลายๆเหต2การณ8  แนะน;าคลาสประเภท Event Adapter
  • 3. เหต2การณ8  เหต2การณ8 (Event) เปIนสถานการณ8ท(=เกดขJนในขณะร,นโปรแกรม อาทเช@น K การใช1อนพ2ต (เมาส8หรอค(ย8บอร8ด) ตดต@อก,บโปรแกรม GUI  การเกดเหต2การณ8ในโปรแกรมภาษาจาวาจะเปIนการสร1างออปเจEคของคลาส ประเภท Event ชนดต@างๆขJนมาตามประเภทของเหต2การณ8 อาทเช@น K • เม=อเล=อนเมาส8ในเฟรมจะเกดออปเจEคของคลาส MouseEvent ขJKนมา • เม=อป?ดเฟรมจะเกดออปเจEคของคลาส WindowEvent ขJKนมา • เม=อกดป2Mมท(อยN@ในเฟรมจะเกดออปเจEคของคลาส ActionEvent ขJKนมา = • เม=อพมพ8ข1อความใน TextField จะเกดออปเจEคของคลาส KeyEvent ขJKนมา
  • 4. คลาสประเภท Event  ออปเจคของคลาสประเภท Event ทเกดขนจะแตกต"างกนตามประเภทของ เหตการณ =  คลาสประเภท Event ในภาษาจาวาจะส(บทอดจากคลาสท(ช(อ EventObject  คลาสประเภท Event ส*าหรบเหตการณทางกราฟ?กจะส(บทอดจากคลาส AWTEvent  คลาสประเภท Event ส*าหรบเหตการณทางกราฟ?กจะอย,"ในแพคเกจ java.awt.event
  • 5. คลาสประเภท Event (AWT & Swing)  คลาสประเภท Event ส*าหรบเหตการณทางกราฟกจะมอย,"สองกล"มค(อ คลาส ในแพคเกจ java.awt.event และ javax.swing.event  คลาสประเภท Event ทใช.โดยพ(นฐานค(อคลาสในแพคเกจ java.awt.event  ส"วนประกอบทางกราฟกทงในแพคเกจ AWT และ Swing ต"างกสามารถทจะ ใช.คลาสเหล"านนได.  Java SE ในเวอรชน 1.4ได.มการเพมคลาสประเภท Event และอนเตอรเฟส ต"างๆ ทเกยวข.องส*าหรบใช.ใน ออบเจกตของคลาสประเภท Swing มากขน โดยคลาสและอนเตอรเฟสเหล"านจะอย,"ในแพคเกจ javax.swing.event
  • 8. องคประกอบของ Event  Event ค(อออปเจคตามประเภทของเหตการณ  Event Source ค(อส"วนทท*าให.เกดเหตการณ  Event Handler ค(อออปเจคทจะท*าหน.าทจดการกบเหตการณทเกดขนโดยม เมธอดทจะรบออปเจคชนด Event ดงกล"าวและมค*าสงในการจดการกบ เหตการณเพ(อโต.ตอบกบผ,.ใช.
  • 9. AWTEvent  คลาส AWTEvent เปIน superclass ของคลาสประเภท Event ส;าหร,บ เหต2การณ8ทางด1านกราฟ?ก ซJงจะม(อยN@ทงหมด 14 คลาสคอ ActionEvent, = ,K AdjustmentEvent, ComponentEvent, ItemEvent, InputMethodEvent, InvocationEvent, TextEvent, FocusEvent, WindowEvent, InputEvent, ContainerEvent, PaintEvent, KeyEvent และ MouseEvent  คลาส AWTEvent และคลาส ObjectEvent ม(เมธอดท(ส;าค,ญด,งน(K = • Object getSource() เพ=อเร(ยกดNออปเจEคประเภท Event Source • int getID() เพ=อระบ2ชนดของเหต2การณ8
  • 10. ActionEvent  จะถNกสร1างขJนในกรณ(ท(=ม(เหต2การณ8เกดขJKนในโปรแกรม GUI ด,งน(K K • เม(อมการคลกเมาสบนป2Mม(Button) • เม(อมการป6อนคย Enter ใน TextField • เม(อมการเล(อกเมน,ใน MenuItem • เม(อมการกด double click ใน List  เมธอดทส*าคญของคลาส ActionEvent ม(ด,งน(K • String getActionCommand() จะส"งช(อค*าสงทเกดขนจาก ActionEvent • int getModifier() จะส"งสถานะของคย Modifier (คย Alt, Ctrl, Meta และ Shift) ทเกดขนจากออปเจEคของคลาส ActionEvent
  • 11. WindowEvent  จะถNกสร1างขJนในกรณ(ท(=ม(เหต2การณ8เกดขJKนเปIนออปเจEคของคลาสประเภท K Window มร,ปแบบต"างๆดงน • opened • closed • closing • iconified • deiconified • activated • deactivated  เมธอดทส*าคญของคลาส WindowEvent ม(ด,งน(K • Object getWindow() จะส"งออปเจคทเป8น Event Source ชนด Window ค(นมา
  • 13. MouseEvent  เมธอดทส*าคญของคลาส MouseEvent มด,งน(K • int getX() จะส"งต*าแหน"งพกดของเมาสแกน X ทม(ชนดข1อมNลเปIน int ค(นมา • int getY() จะส"งต*าแหน"งพกดของเมาสแกน Y ทม(ชนดข1อมNลเปIน int ค(นมา • Point getPoint() จะส"งต*าแหน"งพก,ด (x,y) ของเมาสคนมา โดยม(ชนดข1อมNล เปIนออปเจEคของคลาส Point • int getClickCount() จะส"งจ*านวนครงของการคลกเมาสคนมา
  • 14. ItemEvent  จะถNกสร1างขJนในกรณ(ท(=ม(เหต2การณ8เกดขJKนในโปรแกรม GUI ด,งน(K K • เม(อมการเล(อกหร(อยกเลกรายการใน List หร(อ Checkbox • เม(อมการคลกเมาสรายการใน Choice  เมธอดทส*าคญของคลาส ItemEvent ม(ด,งน(K • ItemSelectable getItemSelectable() จะส"งออปเจคของคลาสประเภท ItemSelectable ทเป8น Event Source ค(นมา • Object getItem() จะส"งออปเจEคของรายการทถ,กเล(อกค(นมา • int getStateChange() จะส@งค@าคงท(ชนด int ท(=ม(ค@าเปIน SELECTED หรอ = DESELECTED เพ=อระบ2สถานการณ8เลอกของรายการคนมา
  • 15. Event อ(นๆ  KeyEvent เป8นคลาสทมการสร.างออปเจคเม(อมเหตการณการกดคยบอรด  FocusEvent เป8นคลาสทมการสร.างออปเจคเม(อผ,.ใช.เล(อนอปกรณอนพต มาชยงออปเจคของส"วนประกอบกราฟกใดๆ  ComponentEvent เป8นคลาสทมการสร.างออปเจคเม(อมเหตการณซง ออปเจคของส"วนประกอบกราฟกมการเปลยนแปลงเช"น เคล(อนทหร(อปรบ ขนาด  ContainerEvent เป8นคลาสทมการสร.างออปเจคเม(อมเหตการณในการ ใส"หร(อยกเลกออปเจคของส"วนประกอบกราฟกลงในออปเจคของคลาส ประเภท Container
  • 16. Event อ(นๆ  AdjustmentEvent เป8นคลาสทมการสร.างออปเจคเม(อมเหตการณในการ ปรบต*าแหน"งชของออปเจคของคลาส ScrollBar หร(อ ScrollPane  TextEvent เป8นคลาสทมการสร.างออปเจคเม(อมเหตการณในการ เปลยนแปลงข.อความในออปเจคของคลาส TextArea
  • 17. อนเตอร8เฟสประเภท Listener  ภาษาจาวาจะจ,ดการก,บเหต2การณ8โดยการสร1างออปเจEคท(สามารถร,บฟDง = เหต2การณ8จากคลาสท(= implements อนเตอร8เฟสประเภท Listener ท(= สอดคล1องก,น  ออปเจEคน(จะท;าหน1าท(=เปIน Event Handler K  อาทเช@น ออปเจEคท(=จะจ,ดการก,บเหต2การณ8ประเภท ActionEvent จะต1อง implements อนเตอร8เฟส ActionListener
  • 18. อนเตอร8เฟสประเภท Listener  ActionListener เปIนอนเตอร8เฟสส;าหร,บออปเจEคของคลาส ActionEvent  AdjustmentListener เปIนอนเตอร8เฟสส;าหร,บออปเจEคของคลาส AdjustmentEvent  ComponentListener เปIนอนเตอร8เฟสส;าหร,บออปเจEคของคลาส ComponentEvent  ContainerListener เปIนอนเตอร8เฟสส;าหร,บออปเจEคของคลาส ContainerEvent  FocusListener เปIนอนเตอร8เฟสส;าหร,บออปเจEคของคลาส FocusEvent  InputMethodListener เปIนอนเตอร8เฟสส;าหร,บอEอบเจกต8ของคลาส InputMethodEvent
  • 19. อนเตอร8เฟสประเภท Listener  ItemListener เปIนอนเตอร8เฟสส;าหร,บออปเจEคของคลาส ItemEvent  KeyListener เปIนอนเตอร8เฟสส;าหร,บออปเจEคของคลาส KeyEvent  MouseListener เปIนอนเตอร8เฟสส;าหร,บออปเจEคของคลาส MouseEvent  MouseMotionListener เปIนอนเตอร8เฟสส;าหร,บออปเจEคของคลาส MouseEvent  TextListener เปIนอนเตอร8เฟสส;าหร,บอEอบเจกต8ของคลาส TextEvent  WindowListener เปIนอนเตอร8เฟสส;าหร,บอEอบเจกต8ของคลาส WindowEvent  AWTEventListener เปIนอนเตอร8เฟสส;าหร,บให1เราสามารถท(=จะไปพ,ฒนาคลาสประเภท EventListener ได1
  • 20. เมธอดท(=ใช1ร,บฟDงเหต2การณ8 อนเตอร8เฟส เมธอดท(ใช1รบฟDงเหต2การณ8 = , ActionListener addActionListener() ItemListener addItemListener() KeyListener addKeyListener() MouseListener addMouseListener() MouseMotionListener addMouseMotionListener() TextListener addTextListener() FocusListener addFocusListener() AdjustmentListener addAdjustmentListener()
  • 21. เมธอดท(=ใช1ร,บฟDงเหต2การณ8 อนเตอร8เฟส เมธอดท(ใช1รบฟDงเหต2การณ8 = , ComponentListener addComponentListener() ContainerListener addContainerListener() WindowListener addWindowListener()
  • 22. เมธอดท(=ต1องลงทะเบ(ยนเม=อต1องการจ,ดการก,บเหต2การณ8 อนเตอร8เฟส เมธอดท(=ตอง implements 1 keyPressed(KeyEvent) KeyListener keyReleased(KeyEvent) keyTyped(KeyEvent) focusGained(FocusEvent) FocusListener focusLost(FocusEvent) adjustmentValueChanged AdjustmentListener (AdjustmentEvent) componentMoved(ComponentEvent) componentHidden(ComponentEvent) ComponentListener componentResized(ComponentEvent) componentShown(ComponentEvent)
  • 23. เมธอดท(=ตอง implements 1 อนเตอร8เฟส เมธอดท(ต1อง implements = ActionListener actionPerformed(ActionEvent) ItemListener itemStateChanged(ItemEvent) mouseClicked(MouseEvent) mouseEntered(MouseEvent) MouseListener mouseExited(MouseEvent) mousePressed(MouseEvent) mouseReleased(MouseEvent) mouseMoved(MouseEvent) MouseMotionListener mouseDragged(MouseEvent)
  • 24. เมธอดท(=ตอง implements 1 อนเตอร8เฟส เมธอดท(=ตอง implements 1 keyPressed(KeyEvent) KeyListener keyReleased(KeyEvent) keyTyped(KeyEvent) focusGained(FocusEvent) FocusListener focusLost(FocusEvent) adjustmentValueChanged AdjustmentListener (AdjustmentEvent) componentMoved(ComponentEvent) componentHidden(ComponentEvent) ComponentListener componentResized(ComponentEvent) componentShown(ComponentEvent)
  • 25. เมธอดท(=ตอง implements 1 อนเตอร8เฟส เมธอดท(=ตอง implements 1 windowOpened(WindowEvent) windowClosed(WindowEvent) windowClosing(WindowEvent) WindowListener windowIconified(WindowEvent) windowDeiconified(WindowEvent) windowActivated(WindowEvent) windowDeactivated(WindowEvent) componentAdded(ContainerEvent) ContainerListener componentRemoved(ContainerEvent) TextListener textValueChanged(TextEvent)
  • 26. การจ,ดการก,บเหต2การณ8  ภาษาจาวาจะม(วธ(การจ,ดการก,บเหต2การณ8ทเร(ยกว@า Delegation Model โดย (= จะม(หล,กการด,งน(K • ออปเจEคของส@วนประกอบกราฟ?กใดๆสามารถเปIนออปเจEคประเภท Event Source ได1 อาทเช@น ออปเจEคของคลาส Button สามารถเปIน Event Source ของ ActionEvent ได1 • คลาสใดๆสามารถร,บฟDงเหต2การณ8ใดๆกEได1 ถ1าคลาสน,Kน implements อนเตอร8เฟสประเภท Listener ท(สอดคล1องก,นอาทเช@น คลาสท(=ตองการร,บฟDง = 1 เหต2การณ8 ActionEvent จะต1อง implements อนเตอร8เฟสท(ช=อ= ActionListener • ออปเจEคประเภท Event ท(เกดจาก Event Source จะถNกส@งไปย,งออปเจEคของคลาสท(= = สามารถร,บฟDงเหต2การณ8ประเภทน,Kน
  • 27. ออปเจคของคลาสประเภท Event Handler  Event Source ใดต1องการท(=จะจ,ดการก,บเหต2การณ8ใดต1องลงทะเบ(ยนเพ=อร,บ ฟDงเหต2การณ8โดยม(รปแบบด,งน(K N eventSource.addXxxListener(listener)  เราสามารถสร1างออปเจคของคลาสประเภท Event Handler ได.หลายร,ป แบบดงน • ก;าหนดคลาสภายนอกคลาสท(ใช1ในการจ,ดการเหต2การณ8 = • ก;าหนดคลาสท(=เปIนคลาสภายในอยN@ในคลาสท(ใช1ในการจ,ดการเหต2การณ8 = • ก;าหนดให1คลาสท(ใช1ในการจ,ดการเหต2การณ8 implements อนเตอร8เฟสประเภท = Listener ท(สอดคล1องก,น และสร1างออปเจEคของคลาสด,งกล@าวภายในคลาสเอง = • ก;าหนดคลาสภายในเมธอด (คลาสประเภท anonymous)
  • 28. ตวอย"างโปรแกรมสร.างออบเจกตของคลาสภายนอก import java.awt.FlowLayout; import javax.swing.*; public class EventDemo1 { public void init() { JFrame fr = new JFrame("Outer Class Event Demo"); fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton bn1 = new JButton("Exit"); fr.setLayout(new FlowLayout()); bn1.addActionListener(new ActionHandler()); fr.add(bn1); fr.setSize(200, 200); fr.setVisible(true); } public static void main(String[] args) { EventDemo1 obj = new EventDemo1(); obj.init(); } }
  • 29. ตวอย"างโปรแกรมสร.างออบเจกตของคลาสภายนอก public class ActionHandler implements ActionListener { public void actionPerformed(ActionEvent ev) { System.exit(0); } } ผลล,พธ8ทได1จากการร,นโปรแกรม (=
  • 30. ค*าอธบายโปรแกรม  คลาส EventDemo1 มป:มทช(อ bn1 ซงลงทะเบยนรบฟ;งเหตการณประเภท ActionEvent จากค*าสง bn1.addActionListener(new ActionHandler());  ค*าสง new ActionHandler()เป8นการสร.างออปเจคทใช.ในการจดการกบ เหตการณประเภท ActionEvent  คลาส ActionHandler จะต.อง implements อนเตอรเฟสช(อ ActionListener  เมธอดทต.อง implements ในคลาสค(อ public void actionPerformed(ActionEvent ev)
  • 31. ตวอย"างโปรแกรมการสร.างออบเจกตของคลาสภายใน import java.awt.*; import java.awt.event.*; import javax.swing.*; public class EventDemo2 { private JFrame fr; private JTextField tf; public void init() { fr = new JFrame("Same Class Event Demo"); fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); tf = new JTextField(15); fr.setLayout(new FlowLayout()); fr.add(tf); tf.setFont(new Font("TimesRoman", Font.BOLD, 16)); fr.addMouseMotionListener(new MouseHandler()); fr.setSize(200, 200); fr.setVisible(true); }
  • 32. ตวอย"างโปรแกรมการสร.างออบเจกตของคลาสภายใน public class MouseHandler implements MouseMotionListener { public void mouseDragged(MouseEvent ev) { tf.setText("X=" + ev.getX() + " Y=" + ev.getY()); } public void mouseMoved(MouseEvent ev) { } } public static void main(String[] args) { EventDemo2 obj = new EventDemo2(); obj.init(); ผลล,พธ8ทได1จากการร,นโปรแกรม (= } }
  • 33. ค;าอธบายโปรแกรม  ตวอย"างโปรแกรม EventDemo2 มการขนทะเบยนออปเจคของคลาส Frame เพ=อร,บฟDงเหต2การณ8 MouseEvent จากค*าสง fr.addMouseMotionListener(new MouseHandler());  โปรแกรมนจะแสดงต*าแหน"งของเมาสเม(อมการเล(อนเมาส  คลาส MouseHandler เป8นคลาสภายใน ท;าให1สามารถเร(ยกใช1ค2ณล,กษณะ ของคลาส EventDemo2 ได. เช"นออปเจค tf ของคลาส TextField
  • 34. ตวอย"างแสดงการสร1างออปเจEคภายในคลาสเด(ยวก,น import java.awt.event.*; import javax.swing.JFrame; public class EventDemo3 implements WindowListener{ public void init() { JFrame fr = new JFrame("Same Class Event Demo"); fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fr.addWindowListener(this); fr.setSize(200, 200); fr.setVisible(true); } public void windowClosing(WindowEvent ev) { System.exit(0); } public void windowOpened(WindowEvent ev) {} public void windowClosed(WindowEvent ev) {} public void windowIconified(WindowEvent ev) {} public void windowDeiconified(WindowEvent ev) {}
  • 35. ตวอย"างแสดงการสร1างออปเจEคภายในคลาสเด(ยวก,น public void windowActivated(WindowEvent ev) {} public void windowDeactivated(WindowEvent ev) {} public static void main(String[] args) { EventDemo3 obj = new EventDemo3(); obj.init(); } } ผลล,พธ8ท(=ได1จากการร,นโปรแกรม
  • 36. ค;าอธบายโปรแกรม  this หมายถJงออปเจEคของคลาสเดยวกน  ตวอย"างโปรแกรมใช.ออปเจค this ในการจดการก,บ WindowEvent จาก ค;าสง fr.addWindowListener(this);  คลาส EventDemo3 ต.อง implements อนเตอรเฟส WindowListener  ค*าสง System.exit(0); ในเมธอด windowClosing()ท;าให1สามารถ ออกจากโปรแกรมได.โดยการคลกเมาส8ท(=เคร=องหมายกากบาทตรง Title Bar
  • 37. การรบฟ;งเหตการณหลายเหต2การณ8  Event Source สามารถทจะขนทะเบยนรบฟ;งเหตการณหลายประเภทได. เช@น • fr.addMouseMotionListener(this); • fr.addWindowListener(this);  คลาสใดๆสามารถ implements อนเตอรเฟสหลายตวได. เช"น • public class EventDemo4 implements MouseMotionListener, WindowListener  Event Handler สามารถทจะจดการกบ Event Source ได.หลายตวและ ออปเจคของคลาสประเภท Event จะมเมธอดในการทจะแยก Event Source ได.
  • 38. ตวอย"างโปรแกรมทลงทะเบยนรบฟ;งเหตการณสองชนด import java.awt.*; import java.awt.event.*; import javax.swing.*; public class EventDemo4 implements MouseMotionListener, WindowListener { private JFrame fr; private JTextField tf; public void init() { fr = new JFrame("Multiple Event Demo"); tf = new JTextField(15); fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fr.setLayout(new FlowLayout()); fr.add(tf); tf.setFont(new Font("TimesRoman", Font.BOLD, 16)); fr.addMouseMotionListener(this); fr.addWindowListener(this); fr.setSize(200, 200); fr.setVisible(true); }
  • 39. ตวอย"างโปรแกรมทลงทะเบยนรบฟ;งเหตการณสองชนด public void mouseDragged(MouseEvent ev) { tf.setText("X=" + ev.getX() + " Y=" + ev.getY()); } public void mouseMoved(MouseEvent ev) { } public void windowClosing(WindowEvent ev) { System.exit(0); } public void windowOpened(WindowEvent ev) { } ผลล,พธ8ท(=ได1จากการร,นโปรแกรม public void windowClosed(WindowEvent ev) { } public void windowIconified(WindowEvent ev) { } public void windowDeiconified(WindowEvent ev) { } public void windowActivated(WindowEvent ev) { } public void windowDeactivated(WindowEvent ev) { } public static void main(String[] args) { EventDemo4 obj = new EventDemo4(); obj.init(); } }
  • 40. คลาสประเภท Event Adapter  คลาสประเภท Event Adapter ค(อคลาสทได1 implements อนเตอรเฟส ประเภท Listener ไว1แล.ว  คลาสประเภท Event Adapter นน ได1ก;าหนดเมธอดต"างๆของอนเตอรเฟสท ต.องเขยนไว1แล1ว แต@จะเปIนบลEอกค;าส,งท(=ไม@ม(ค;าส,งใดๆอยN@ภายในบลEอก = =  คลาสประเภท Event Adapter จะช@วยท*าให.เขยนโปรแกรมท(=เปIนคลาส ประเภท Event Handler ได.ง"ายขJKนโดยลดจ;านวนเมธอดท(=จะต1องเข(ยนบลEอก ค;าส,=ง
  • 41. คลาสประเภท Event Adapter  คลาสประเภท Event Adapter มดงน • MouseAdapter ค(อคลาสท implements อนเตอรเฟสทช(อ MouseListener • MouseMotionAdapter ค(อคลาสท implements อนเตอรเฟสทช(อ MouseMotionListener • ComponentAdapter ค(อคลาสท implements อนเตอรเฟสทช(อ ComponentListener • ContainerAdapter ค(อคลาสท implements อนเตอรเฟสทช(อ ContainerListener • KeyAdapter ค(อคลาสท implements อนเตอรเฟสทช(อ KeyListener • WindowAdapter ค(อคลาสท implements อนเตอรเฟสทช(อ WindowListener • FocusAdapter ค(อคลาสท implements อนเตอรเฟสทช(อ FocusListener
  • 42. ต,วอย@างโปรแกรมคลาสประเภท Event Adapter import javax.swing.JFrame; public class EventDemo5 { public void init() { JFrame fr = new JFrame("Adapter Class Event Demo"); fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fr.addWindowListener(new WindowHandler()); fr.setSize(200, 200); fr.setVisible(true); } public static void main(String[] args) { EventDemo5 obj = new EventDemo5(); obj.init(); } }
  • 43. ต,วอย@างโปรแกรมคลาสประเภท Event Adapter import java.awt.event.*; public class WindowHandler extends WindowAdapter { public void windowClosing(WindowEvent ev) { System.exit(0); } }
  • 44. การสร1างคลาสแบบ anonymous  เราสามารถก*าหนดคลาสทงหมดให.อย,"ภายในเมธอดทเรยกใช.งาน  คลาสประเภทนเรยกว"าคลาสประเภท anonymous  คลาสประเภท anonymous นยมใช.ในการจดการก,บ Event เช"น การปด Frame
  • 45. ต,วอย@างโปรแกรมคลาสแบบ anonymous import java.awt.event.*; import javax.swing.JFrame; public class EventDemo6 { public void init() { JFrame fr = new JFrame("Anonymous Class Event Demo"); fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fr.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent ev) { System.exit(0); } }); fr.setSize(200, 200); fr.setVisible(true); } public static void main(String[] args) { EventDemo6 obj = new EventDemo6(); obj.init(); } }
  • 46. สร2ปเนKอหาของบท  ออปเจEคของคลาสประเภท Event ในแพจเกEจ java.awt.event จะถNก สร1างขJKนเม=อม(การกระท;าบางอย@างเกดขJนก,บต,วใส@ส@วนประกอบหรอส@วน K ประกอบกราฟ?ก เช@น ActionEvent เกดขJKนเม=อม(การกด Button หรอ WindowEvent เกดขJKนเม=อม(การป?ด Frame  การจะจ,ดการก,บ Event ประเภทใดน,Kน โดยท,=วไปจะต1องสร1างออปเจEคของ คลาสท(= implements อนเตอร8เฟสท(สอดคล1องก,นก,บ Event น,นด1วย เช@น = K ถ1าต1องการจ,ดการก,บ WindowEvent จะต1องสร1างออปเจEคของคลาสท(= implements อนเตอร8เฟส WindowListener โดยการสร1างออปเจEคอาจ สร1างจากคลาสภายนอก คลาสภายใน คลาสเด(ยวก,น หรอคลาสประเภท anonymous ซJงคลาสประเภทน(KจะถNกเร(ยกว@าคลาสประเภท Event Handler =
  • 47. สร2ปเนKอหาของบท  คลาสใดๆสามารถ implements อนเตอร8เฟสได1หลายต,ว ท;าให1สามารถท(= จะขJKนทะเบ(ยนร,บฟDงเหต2การณ8ได1หลายเหต2การณ8  คลาสประเภท Event Adapter ค(อคลาสทได1 implements อนเตอรเฟส ประเภท Listener ไว1แล.ว โดยได1ก;าหนดเมธอดต"างๆของอนเตอรเฟสท ต.องเขยนไว1แล1ว แต@จะเปIนบลEอกค;าส,งท(=ไม@ม(ค;าส,งใดๆอยN@ภายในบลEอก = =
  • 48. แบบฝrกห,ด  ข1อท(= 1 • ทดลองเข(ยนโปรแกรมจ,ดการเหต2การณ8เพ=อท;าให1โปรแกรม GUI ในแบบฝrกห,ดบทท(= 6 ให1สามารถท;างานได1อย@างถNกต1อง