• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Java Programming: การจัดการกับเหตุการณ์กราฟิก
 

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

on

  • 3,817 views

แนะนำวิธีการเขียนโปรแกรม เพื่อจัดการกับเหตุการณ์กราฟิกในโปรแกรม GUI ...

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

Statistics

Views

Total Views
3,817
Views on SlideShare
3,552
Embed Views
265

Actions

Likes
0
Downloads
152
Comments
0

4 Embeds 265

http://www.thaijavadev.com 208
http://krutiw.wordpress.com 49
http://thaijavadev.com 5
http://www.slideshare.net 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • บทท 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อง