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

3,792 views

Published on

แนะนำวิธีการเขียนโปรแกรม เพื่อจัดการกับเหตุการณ์กราฟิกในโปรแกรม GUI โดยจะเริ่มต้นจากการแนะนำนิยามความหมายของเหตุการณ์ แนะนำคลาสประเภท Event ที่เกี่ยวข้องกับเหตุการณ์กราฟิกต่างๆ แนะนำอินเตอร์เฟสประเภท Listener ที่ใช้ในการรับฟังเหตุการณ์ อธิบายวิธีการจัดการกับเหตุการณ์กราฟิกหลายๆ เหตุการณ์ และตอนท้ายของบทเป็นการแนะนำคลาสประเภท Event Adapter

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,792
On SlideShare
0
From Embeds
0
Number of Embeds
289
Actions
Shares
0
Downloads
201
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

  1. 1. บทท 7 การจดการกบเหตการณกราฟก (GUI Event Handling) ผศ.ธนศา เครอไวศยวรรณ คณะเทคโนโลย(สารสนเทศ สถาบ,นเทคโนโลย(พระจอมเกล1าเจ1าค2ณทหารลาดกระบ,ง
  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. 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. 4. คลาสประเภท Event  ออปเจคของคลาสประเภท Event ทเกดขนจะแตกต"างกนตามประเภทของ เหตการณ =  คลาสประเภท Event ในภาษาจาวาจะส(บทอดจากคลาสท(ช(อ EventObject  คลาสประเภท Event ส*าหรบเหตการณทางกราฟ?กจะส(บทอดจากคลาส AWTEvent  คลาสประเภท Event ส*าหรบเหตการณทางกราฟ?กจะอย,"ในแพคเกจ java.awt.event
  5. 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
  6. 6. คลาสประเภท Event แพคเกจ java.event.awt
  7. 7. คลาสประเภท Event แพคเกจ javax.event.swing
  8. 8. องคประกอบของ Event  Event ค(อออปเจคตามประเภทของเหตการณ  Event Source ค(อส"วนทท*าให.เกดเหตการณ  Event Handler ค(อออปเจคทจะท*าหน.าทจดการกบเหตการณทเกดขนโดยม เมธอดทจะรบออปเจคชนด Event ดงกล"าวและมค*าสงในการจดการกบ เหตการณเพ(อโต.ตอบกบผ,.ใช.
  9. 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. 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. 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 ค(นมา
  12. 12. MouseEvent  จะถNกสร1างขJนในกรณ(ท(=ม(การใช1งานเมาส8เพ=อตดต@อก,บผN1ใช1โดยม(เหต2การณ8ท(= K เกดขJนได1ด,งน(K K • dragged • moved • clicked • entered • exited • pressed • released
  13. 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. 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. 15. Event อ(นๆ  KeyEvent เป8นคลาสทมการสร.างออปเจคเม(อมเหตการณการกดคยบอรด  FocusEvent เป8นคลาสทมการสร.างออปเจคเม(อผ,.ใช.เล(อนอปกรณอนพต มาชยงออปเจคของส"วนประกอบกราฟกใดๆ  ComponentEvent เป8นคลาสทมการสร.างออปเจคเม(อมเหตการณซง ออปเจคของส"วนประกอบกราฟกมการเปลยนแปลงเช"น เคล(อนทหร(อปรบ ขนาด  ContainerEvent เป8นคลาสทมการสร.างออปเจคเม(อมเหตการณในการ ใส"หร(อยกเลกออปเจคของส"วนประกอบกราฟกลงในออปเจคของคลาส ประเภท Container
  16. 16. Event อ(นๆ  AdjustmentEvent เป8นคลาสทมการสร.างออปเจคเม(อมเหตการณในการ ปรบต*าแหน"งชของออปเจคของคลาส ScrollBar หร(อ ScrollPane  TextEvent เป8นคลาสทมการสร.างออปเจคเม(อมเหตการณในการ เปลยนแปลงข.อความในออปเจคของคลาส TextArea
  17. 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. 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. 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. 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. 21. เมธอดท(=ใช1ร,บฟDงเหต2การณ8 อนเตอร8เฟส เมธอดท(ใช1รบฟDงเหต2การณ8 = , ComponentListener addComponentListener() ContainerListener addContainerListener() WindowListener addWindowListener()
  22. 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. 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. 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. 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. 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. 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. 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. 29. ตวอย"างโปรแกรมสร.างออบเจกตของคลาสภายนอก public class ActionHandler implements ActionListener { public void actionPerformed(ActionEvent ev) { System.exit(0); } } ผลล,พธ8ทได1จากการร,นโปรแกรม (=
  30. 30. ค*าอธบายโปรแกรม  คลาส EventDemo1 มป:มทช(อ bn1 ซงลงทะเบยนรบฟ;งเหตการณประเภท ActionEvent จากค*าสง bn1.addActionListener(new ActionHandler());  ค*าสง new ActionHandler()เป8นการสร.างออปเจคทใช.ในการจดการกบ เหตการณประเภท ActionEvent  คลาส ActionHandler จะต.อง implements อนเตอรเฟสช(อ ActionListener  เมธอดทต.อง implements ในคลาสค(อ public void actionPerformed(ActionEvent ev)
  31. 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. 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. 33. ค;าอธบายโปรแกรม  ตวอย"างโปรแกรม EventDemo2 มการขนทะเบยนออปเจคของคลาส Frame เพ=อร,บฟDงเหต2การณ8 MouseEvent จากค*าสง fr.addMouseMotionListener(new MouseHandler());  โปรแกรมนจะแสดงต*าแหน"งของเมาสเม(อมการเล(อนเมาส  คลาส MouseHandler เป8นคลาสภายใน ท;าให1สามารถเร(ยกใช1ค2ณล,กษณะ ของคลาส EventDemo2 ได. เช"นออปเจค tf ของคลาส TextField
  34. 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. 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. 36. ค;าอธบายโปรแกรม  this หมายถJงออปเจEคของคลาสเดยวกน  ตวอย"างโปรแกรมใช.ออปเจค this ในการจดการก,บ WindowEvent จาก ค;าสง fr.addWindowListener(this);  คลาส EventDemo3 ต.อง implements อนเตอรเฟส WindowListener  ค*าสง System.exit(0); ในเมธอด windowClosing()ท;าให1สามารถ ออกจากโปรแกรมได.โดยการคลกเมาส8ท(=เคร=องหมายกากบาทตรง Title Bar
  37. 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. 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. 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. 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. 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. 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. 43. ต,วอย@างโปรแกรมคลาสประเภท Event Adapter import java.awt.event.*; public class WindowHandler extends WindowAdapter { public void windowClosing(WindowEvent ev) { System.exit(0); } }
  44. 44. การสร1างคลาสแบบ anonymous  เราสามารถก*าหนดคลาสทงหมดให.อย,"ภายในเมธอดทเรยกใช.งาน  คลาสประเภทนเรยกว"าคลาสประเภท anonymous  คลาสประเภท anonymous นยมใช.ในการจดการก,บ Event เช"น การปด Frame
  45. 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. 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. 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. 48. แบบฝrกห,ด  ข1อท(= 1 • ทดลองเข(ยนโปรแกรมจ,ดการเหต2การณ8เพ=อท;าให1โปรแกรม GUI ในแบบฝrกห,ดบทท(= 6 ให1สามารถท;างานได1อย@างถNกต1อง

×