Enviar pesquisa
Carregar
๋Java Programming [7/12] : GUI Event Handling
•
1 gostou
•
2,210 visualizações
IMC Institute
Seguir
เอกสารแนะนำการเขียนโปรแกรมภาษาจาวา
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 44
Recomendados
Java Programming [5/12] : Build Graphical User Interface
Java Programming [5/12] : Build Graphical User Interface
IMC Institute
Java Programming [11/12] : Input and Output Classes
Java Programming [11/12] : Input and Output Classes
IMC Institute
Java Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and Collection
IMC Institute
แผนการเรียนรู้ฮาร์ดแวร์ (Hardware)
แผนการเรียนรู้ฮาร์ดแวร์ (Hardware)
Khon Kaen University
ใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซี
ใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซี
Nattapon
หน่วยที่ 1 พื้นฐานระบบเครือข่ายคอมพิวเตอร์
หน่วยที่ 1 พื้นฐานระบบเครือข่ายคอมพิวเตอร์
ekkachai kaikaew
คู่มือ Handbook app inventor
คู่มือ Handbook app inventor
Areefin Kareng
อุปกรณ์รับและแสดงผล
อุปกรณ์รับและแสดงผล
skiats
Recomendados
Java Programming [5/12] : Build Graphical User Interface
Java Programming [5/12] : Build Graphical User Interface
IMC Institute
Java Programming [11/12] : Input and Output Classes
Java Programming [11/12] : Input and Output Classes
IMC Institute
Java Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and Collection
IMC Institute
แผนการเรียนรู้ฮาร์ดแวร์ (Hardware)
แผนการเรียนรู้ฮาร์ดแวร์ (Hardware)
Khon Kaen University
ใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซี
ใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซี
Nattapon
หน่วยที่ 1 พื้นฐานระบบเครือข่ายคอมพิวเตอร์
หน่วยที่ 1 พื้นฐานระบบเครือข่ายคอมพิวเตอร์
ekkachai kaikaew
คู่มือ Handbook app inventor
คู่มือ Handbook app inventor
Areefin Kareng
อุปกรณ์รับและแสดงผล
อุปกรณ์รับและแสดงผล
skiats
Lesson4 animalrepro2561
Lesson4 animalrepro2561
Wichai Likitponrak
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูล
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูล
Rungnapa Rungnapa
Solidworks ขั้นพื้นฐาน
Solidworks ขั้นพื้นฐาน
Nut Veron
ส่วนประกอบของโปรแกรม Illustrator
ส่วนประกอบของโปรแกรม Illustrator
Nichakorn Sengsui
ชั้นประถมศึกษาปีที่ 5
ชั้นประถมศึกษาปีที่ 5
krunuy5
ตัวอย่างคู่มื่อ Profile Builder 2.1.7 ภาษาไทย
ตัวอย่างคู่มื่อ Profile Builder 2.1.7 ภาษาไทย
SKETCHUP HOME
Інформатика-5. Урок 26. Комп'ютерна презентація та її об'єкти
Інформатика-5. Урок 26. Комп'ютерна презентація та її об'єкти
Володимир Бондар
แจกเอกสารประกอบการสอนใช้งาน Sketch up ในการประยุกต์ใช้ในการก่อสร้าง
แจกเอกสารประกอบการสอนใช้งาน Sketch up ในการประยุกต์ใช้ในการก่อสร้าง
chupol bamrungchok
Ast.c2560.4t
Ast.c2560.4t
มะดาโอะ มะเซ็ง
Basic m5-2-chapter2
Basic m5-2-chapter2
กลุ่มสาระการเรียนรู้คณิตศาสตร์ โรงเรียนอุตรดิตถ์
ข้อสอบปฏิบัติ Microsoft Word
ข้อสอบปฏิบัติ Microsoft Word
Supreeyar philarit
การเคลื่อนที่ของสัตว์ไม่มีกระดูกสันหลัง
การเคลื่อนที่ของสัตว์ไม่มีกระดูกสันหลัง
สุรินทร์ ดีแก้วเกษ
ข้อสอบปลายภาค50ข้อ โปรแกรมword
ข้อสอบปลายภาค50ข้อ โปรแกรมword
peter dontoom
створення зв’язків між таблицями
створення зв’язків між таблицями
Ольга Казанцева
บทที่3เทคนิคการส่งข้อมูลดิจิตอล
บทที่3เทคนิคการส่งข้อมูลดิจิตอล
kamolphan_sri
แสงและองค์ประกอบของภาพ
แสงและองค์ประกอบของภาพ
Dr.Kridsanapong Lertbumroongchai
Java Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented Concept
IMC Institute
แผนการจัดการเรียนรู้ ป. 5 (3)
แผนการจัดการเรียนรู้ ป. 5 (3)
naruephak
บทที่ 2
บทที่ 2
Gawewat Dechaapinun
คู่มือการอบรมครู การพัฒนาสื่อการเรียนการสอน ด้วย MIT App Inventor
คู่มือการอบรมครู การพัฒนาสื่อการเรียนการสอน ด้วย MIT App Inventor
Somchart Phaeumnart
Java Programming: การจัดการกับเหตุการณ์กราฟิก
Java Programming: การจัดการกับเหตุการณ์กราฟิก
Thanachart Numnonda
P3
P3
krumo
Mais conteúdo relacionado
Mais procurados
Lesson4 animalrepro2561
Lesson4 animalrepro2561
Wichai Likitponrak
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูล
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูล
Rungnapa Rungnapa
Solidworks ขั้นพื้นฐาน
Solidworks ขั้นพื้นฐาน
Nut Veron
ส่วนประกอบของโปรแกรม Illustrator
ส่วนประกอบของโปรแกรม Illustrator
Nichakorn Sengsui
ชั้นประถมศึกษาปีที่ 5
ชั้นประถมศึกษาปีที่ 5
krunuy5
ตัวอย่างคู่มื่อ Profile Builder 2.1.7 ภาษาไทย
ตัวอย่างคู่มื่อ Profile Builder 2.1.7 ภาษาไทย
SKETCHUP HOME
Інформатика-5. Урок 26. Комп'ютерна презентація та її об'єкти
Інформатика-5. Урок 26. Комп'ютерна презентація та її об'єкти
Володимир Бондар
แจกเอกสารประกอบการสอนใช้งาน Sketch up ในการประยุกต์ใช้ในการก่อสร้าง
แจกเอกสารประกอบการสอนใช้งาน Sketch up ในการประยุกต์ใช้ในการก่อสร้าง
chupol bamrungchok
Ast.c2560.4t
Ast.c2560.4t
มะดาโอะ มะเซ็ง
Basic m5-2-chapter2
Basic m5-2-chapter2
กลุ่มสาระการเรียนรู้คณิตศาสตร์ โรงเรียนอุตรดิตถ์
ข้อสอบปฏิบัติ Microsoft Word
ข้อสอบปฏิบัติ Microsoft Word
Supreeyar philarit
การเคลื่อนที่ของสัตว์ไม่มีกระดูกสันหลัง
การเคลื่อนที่ของสัตว์ไม่มีกระดูกสันหลัง
สุรินทร์ ดีแก้วเกษ
ข้อสอบปลายภาค50ข้อ โปรแกรมword
ข้อสอบปลายภาค50ข้อ โปรแกรมword
peter dontoom
створення зв’язків між таблицями
створення зв’язків між таблицями
Ольга Казанцева
บทที่3เทคนิคการส่งข้อมูลดิจิตอล
บทที่3เทคนิคการส่งข้อมูลดิจิตอล
kamolphan_sri
แสงและองค์ประกอบของภาพ
แสงและองค์ประกอบของภาพ
Dr.Kridsanapong Lertbumroongchai
Java Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented Concept
IMC Institute
แผนการจัดการเรียนรู้ ป. 5 (3)
แผนการจัดการเรียนรู้ ป. 5 (3)
naruephak
บทที่ 2
บทที่ 2
Gawewat Dechaapinun
คู่มือการอบรมครู การพัฒนาสื่อการเรียนการสอน ด้วย MIT App Inventor
คู่มือการอบรมครู การพัฒนาสื่อการเรียนการสอน ด้วย MIT App Inventor
Somchart Phaeumnart
Mais procurados
(20)
Lesson4 animalrepro2561
Lesson4 animalrepro2561
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูล
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูล
Solidworks ขั้นพื้นฐาน
Solidworks ขั้นพื้นฐาน
ส่วนประกอบของโปรแกรม Illustrator
ส่วนประกอบของโปรแกรม Illustrator
ชั้นประถมศึกษาปีที่ 5
ชั้นประถมศึกษาปีที่ 5
ตัวอย่างคู่มื่อ Profile Builder 2.1.7 ภาษาไทย
ตัวอย่างคู่มื่อ Profile Builder 2.1.7 ภาษาไทย
Інформатика-5. Урок 26. Комп'ютерна презентація та її об'єкти
Інформатика-5. Урок 26. Комп'ютерна презентація та її об'єкти
แจกเอกสารประกอบการสอนใช้งาน Sketch up ในการประยุกต์ใช้ในการก่อสร้าง
แจกเอกสารประกอบการสอนใช้งาน Sketch up ในการประยุกต์ใช้ในการก่อสร้าง
Ast.c2560.4t
Ast.c2560.4t
Basic m5-2-chapter2
Basic m5-2-chapter2
ข้อสอบปฏิบัติ Microsoft Word
ข้อสอบปฏิบัติ Microsoft Word
การเคลื่อนที่ของสัตว์ไม่มีกระดูกสันหลัง
การเคลื่อนที่ของสัตว์ไม่มีกระดูกสันหลัง
ข้อสอบปลายภาค50ข้อ โปรแกรมword
ข้อสอบปลายภาค50ข้อ โปรแกรมword
створення зв’язків між таблицями
створення зв’язків між таблицями
บทที่3เทคนิคการส่งข้อมูลดิจิตอล
บทที่3เทคนิคการส่งข้อมูลดิจิตอล
แสงและองค์ประกอบของภาพ
แสงและองค์ประกอบของภาพ
Java Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented Concept
แผนการจัดการเรียนรู้ ป. 5 (3)
แผนการจัดการเรียนรู้ ป. 5 (3)
บทที่ 2
บทที่ 2
คู่มือการอบรมครู การพัฒนาสื่อการเรียนการสอน ด้วย MIT App Inventor
คู่มือการอบรมครู การพัฒนาสื่อการเรียนการสอน ด้วย MIT App Inventor
Semelhante a ๋Java Programming [7/12] : GUI Event Handling
Java Programming: การจัดการกับเหตุการณ์กราฟิก
Java Programming: การจัดการกับเหตุการณ์กราฟิก
Thanachart Numnonda
P3
P3
krumo
Swish max
Swish max
Surapong Jakang
บทที่ 13 การดักจับเ
บทที่ 13 การดักจับเ
Theeravaj Tum
Manual swish max
Manual swish max
Surapong Jakang
ภาษาจาวา 1
ภาษาจาวา 1
khwanchanokPhraeampha
Java script 1
Java script 1
Nunnaphat Chadajit
Semelhante a ๋Java Programming [7/12] : GUI Event Handling
(7)
Java Programming: การจัดการกับเหตุการณ์กราฟิก
Java Programming: การจัดการกับเหตุการณ์กราฟิก
P3
P3
Swish max
Swish max
บทที่ 13 การดักจับเ
บทที่ 13 การดักจับเ
Manual swish max
Manual swish max
ภาษาจาวา 1
ภาษาจาวา 1
Java script 1
Java script 1
Mais de IMC Institute
นิตยสาร Digital Trends ฉบับที่ 14
นิตยสาร Digital Trends ฉบับที่ 14
IMC Institute
Digital trends Vol 4 No. 13 Sep-Dec 2019
Digital trends Vol 4 No. 13 Sep-Dec 2019
IMC Institute
บทความ The evolution of AI
บทความ The evolution of AI
IMC Institute
IT Trends eMagazine Vol 4. No.12
IT Trends eMagazine Vol 4. No.12
IMC Institute
เพราะเหตุใด Digitization ไม่ตอบโจทย์ Digital Transformation
เพราะเหตุใด Digitization ไม่ตอบโจทย์ Digital Transformation
IMC Institute
IT Trends 2019: Putting Digital Transformation to Work
IT Trends 2019: Putting Digital Transformation to Work
IMC Institute
มูลค่าตลาดดิจิทัลไทย 3 อุตสาหกรรม
มูลค่าตลาดดิจิทัลไทย 3 อุตสาหกรรม
IMC Institute
IT Trends eMagazine Vol 4. No.11
IT Trends eMagazine Vol 4. No.11
IMC Institute
แนวทางการทำ Digital transformation
แนวทางการทำ Digital transformation
IMC Institute
บทความ The New Silicon Valley
บทความ The New Silicon Valley
IMC Institute
นิตยสาร IT Trends ของ IMC Institute ฉบับที่ 10
นิตยสาร IT Trends ของ IMC Institute ฉบับที่ 10
IMC Institute
แนวทางการทำ Digital transformation
แนวทางการทำ Digital transformation
IMC Institute
The Power of Big Data for a new economy (Sample)
The Power of Big Data for a new economy (Sample)
IMC Institute
บทความ Robotics แนวโน้มใหม่สู่บริการเฉพาะทาง
บทความ Robotics แนวโน้มใหม่สู่บริการเฉพาะทาง
IMC Institute
IT Trends eMagazine Vol 3. No.9
IT Trends eMagazine Vol 3. No.9
IMC Institute
Thailand software & software market survey 2016
Thailand software & software market survey 2016
IMC Institute
Developing Business Blockchain Applications on Hyperledger
Developing Business Blockchain Applications on Hyperledger
IMC Institute
Digital transformation @thanachart.org
Digital transformation @thanachart.org
IMC Institute
บทความ Big Data จากบล็อก thanachart.org
บทความ Big Data จากบล็อก thanachart.org
IMC Institute
กลยุทธ์ 5 ด้านกับการทำ Digital Transformation
กลยุทธ์ 5 ด้านกับการทำ Digital Transformation
IMC Institute
Mais de IMC Institute
(20)
นิตยสาร Digital Trends ฉบับที่ 14
นิตยสาร Digital Trends ฉบับที่ 14
Digital trends Vol 4 No. 13 Sep-Dec 2019
Digital trends Vol 4 No. 13 Sep-Dec 2019
บทความ The evolution of AI
บทความ The evolution of AI
IT Trends eMagazine Vol 4. No.12
IT Trends eMagazine Vol 4. No.12
เพราะเหตุใด Digitization ไม่ตอบโจทย์ Digital Transformation
เพราะเหตุใด Digitization ไม่ตอบโจทย์ Digital Transformation
IT Trends 2019: Putting Digital Transformation to Work
IT Trends 2019: Putting Digital Transformation to Work
มูลค่าตลาดดิจิทัลไทย 3 อุตสาหกรรม
มูลค่าตลาดดิจิทัลไทย 3 อุตสาหกรรม
IT Trends eMagazine Vol 4. No.11
IT Trends eMagazine Vol 4. No.11
แนวทางการทำ Digital transformation
แนวทางการทำ Digital transformation
บทความ The New Silicon Valley
บทความ The New Silicon Valley
นิตยสาร IT Trends ของ IMC Institute ฉบับที่ 10
นิตยสาร IT Trends ของ IMC Institute ฉบับที่ 10
แนวทางการทำ Digital transformation
แนวทางการทำ Digital transformation
The Power of Big Data for a new economy (Sample)
The Power of Big Data for a new economy (Sample)
บทความ Robotics แนวโน้มใหม่สู่บริการเฉพาะทาง
บทความ Robotics แนวโน้มใหม่สู่บริการเฉพาะทาง
IT Trends eMagazine Vol 3. No.9
IT Trends eMagazine Vol 3. No.9
Thailand software & software market survey 2016
Thailand software & software market survey 2016
Developing Business Blockchain Applications on Hyperledger
Developing Business Blockchain Applications on Hyperledger
Digital transformation @thanachart.org
Digital transformation @thanachart.org
บทความ Big Data จากบล็อก thanachart.org
บทความ Big Data จากบล็อก thanachart.org
กลยุทธ์ 5 ด้านกับการทำ Digital Transformation
กลยุทธ์ 5 ด้านกับการทำ Digital Transformation
๋Java Programming [7/12] : GUI Event Handling
1.
บทที่ 7 การจัด
การกับ เหตุก ารณ์ กราฟฟิก (GUI Event Handling) อ.ธนิศ า เครือ ไวศยวรรณ คณะเทคโนโลยีส ารสนเทศ สถาบัน เทคโนโลยีพ ระจอมเกล้า เจ้า
2.
วัต ถุป ระสงค์
นิย ามความหมายของเหตุก ารณ์ แนะนำา คลาสประเภท Event ทีเ กีย วข้อ งกับ ่ ่ เหตุก ารณ์ก ราฟฟิก ต่า งๆ แนะนำา อิน เตอร์เ ฟสประเภท Listener ทีใ ช้ใ นการ ่ รับ ฟัง เหตุก ารณ์ อธิบ ายวิธ ีก ารสร้า งออปเจ็ค ของคลาสประเภท Event Handler อธิบ ายวิธ ีก ารจัด การกับ เหตุก ารณ์ก ราฟฟิก หลายๆเหตุก ารณ์ แนะนำา คลาสประเภท Event Adapter
3.
เหตุก ารณ์ เหตุก
ารณ์ (Event) เป็น สถานการณ์ท เ กิด ขึ้น ใน ี่ ขณะรัน โปรแกรม อาทิเ ช่น การใช้อ ิน พุต (เมาส์ หรือ คีย บ อร์ด ) ติด ต่อ กับ โปรแกรม GUI ์ การเกิด เหตุก ารณ์ใ นโปรแกรมภาษาจาวาจะ เป็น การสร้า งออปเจ็ค ของคลาสประเภท Event ชนิด ต่า งๆขึ้น มาตามประเภทของเหตุก ารณ์ อาทิ เช่น • เมื่อ เลื่อ นเมาส์ใ นเฟรมจะเกิด ออปเจ็ค ของคลาส MouseEvent ขึ้น มา • เมื่อ ปิด เฟรมจะเกิด ออปเจ็ค ของคลาส WindowEvent ขึ้น มา • เมื่อ กดปุ่ม ที่อ ยู่ใ นเฟรมจะเกิด ออปเจ็ค ของคลาส ActionEvent ขึ้น มา
4.
คลาสประเภท
Event ออปเจ็ค ของคลาสประเภท Event ทีเ กิด ขึ้น จะแตก ่ ต่า งกัน ตามประเภทของเหตุก ารณ์ คลาสประเภท Event ในภาษาจาวาจะสืบ ทอดจาก คลาสทีชื่อ EventObject ่ คลาสประเภท Event สำา หรับ เหตุก ารณ์ท าง กราฟฟิก จะสืบ ทอดจากคลาส AWTEvent คลาสประเภท Event สำา หรับ เหตุก ารณ์ท าง กราฟฟิก จะอยู่ใ นแพคเก็จ java.awt.event
5.
คลาสประเภท Event สำา
หรับ เหตุก ารณ์ก ราฟฟิก
6.
องค์ป ระกอบของ
Event Event คือ ออปเจ็ค ตามประเภทของเหตุก ารณ์ Event Source คือ ส่ว นทีท ำา ให้เ กิด เหตุก ารณ์ ่ Event Handler คือ ออปเจ็ค ที่จ ะทำา หน้า ทีจ ัด การ ่ กับ เหตุก ารณ์ท เ กิด ขึ้น โดยมีเ มธอดทีจ ะรับ ออปเจ็ ี่ ่ คชนิด Event ดัง กล่า วและมีค ำา สัง ในการจัด การกับ ่ เหตุก ารณ์เ พือ โต้ต อบกับ ผู้ใ ช้ ่
7.
AWTEvent คลาส AWTEvent
เป็น superclass ของคลาส ประเภท Event สำา หรับ เหตุก ารณ์ท างด้า นกราฟฟิก ซึ่ง จะมีอ ยูท ง หมด 11 คลาสคือ ActionEvent, ่ ั้ AdjustmentEvent, ComponentEvent, ItemEvent, TextEvent, FocusEvent, WindowEvent, InputEvent, ContainerEvent, KeyEvent และ MouseEvent คลาส AWTEvent และคลาส ObjectEvent มีเ มธอดที่ สำา คัญ ดัง นี้ • Object getSource() เพื่อ เรีย กดูอ อปเจ็ค ประเภท Event Source • int getID() เพื่อ ระบุช นิด ของเหตุก ารณ์
8.
ActionEvent จะถูก สร้า
งขึ้น ในกรณีท ม เ หตุก ารณ์เ กิด ขึ้น ใน ี่ ี โปรแกรม GUI ดัง นี้ • เมื่อ มีก ารคลิก เมาส์บ นปุ่ม (Button) • เมื่อ มีก ารป้อ นคีย ์ Enter ใน TextField • เมื่อ มีก ารเลือ กเมนูใ น MenuItem • เมื่อ มีก ารกด double click ใน List เมธอดทีส ำา คัญ ของคลาส ActionEvent ่ มีด ัง นี้ • String getActionCommand() จะส่ง ชื่อ คำา สั่ง ที่เ กิด ขึ้น จาก ActionEvent • int getModifier() จะส่ง สถานะของคีย ์ Modifier (คีย ์ Alt, Ctrl, Meta และ Shift) ที่เ กิด ขึ้น จากออปเจ็ค ของ คลาส ActionEvent
9.
WindowEvent จะถูก สร้า
งขึ้น ในกรณีท ม เ หตุก ารณ์เ กิด ขึ้น เป็น ี่ ี ออปเจ็ค ของคลาสประเภท Window มีร ูป แบบต่า งๆ ดัง นี้ • opened • closed • closing • iconified • deiconified • activated • deactivated เมธอดทีส ำา คัญ ของคลาส WindowEvent ่ มีด ัง นี้ • Object getWindow() จะส่ง ออปเจ็ค ที่เ ป็น Event Source ชนิด Window คืน มา
10.
MouseEvent จะถูก สร้า
งขึ้น ในกรณีท ม ก ารใช้ง านเมาส์เ พือ ี่ ี ่ ติด ต่อ กับ ผู้ใ ช้โ ดยมีเ หตุก ารณ์ท เ กิด ขึ้น ได้ด ัง นี้ ี่ • dragged • moved • clicked • entered • exited • pressed • released
11.
MouseEvent เมธอดทีส ำา
คัญ ของคลาส MouseEvent ่ มีด ัง นี้ • int getX() จะส่ง ตำา แหน่ง พิก ัด ของเมาส์แ กน X ที่ม ีช นิด ข้อ มูล เป็น int คืน มา • int getY() จะส่ง ตำา แหน่ง พิก ัด ของเมาส์แ กน Y ที่ม ีช นิด ข้อ มูล เป็น int คืน มา • Point getPoint() จะส่ง ตำา แหน่ง พิก ัด (x,y) ของเมาส์ค ืน มา โดยมีช นิด ข้อ มูล เป็น ออปเจ็ค ของคลาส Point • int getClickCount() จะส่ง จำา นวนครั้ง ของการ คลิก เมาส์ คืน มา
12.
ItemEvent จะถูก สร้า
งขึ้น ในกรณีท ม เ หตุก ารณ์เ กิด ขึ้น ใน ี่ ี โปรแกรม GUI ดัง นี้ • เมื่อ มีก ารเลือ กหรือ ยกเลิก รายการใน List หรือ Checkbox • เมื่อ มีก ารคลิก เมาส์ร ายการใน Choice เมธอดทีส ำา คัญ ของคลาส ่ ItemEvent มีด ัง นี้ • ItemSelectable getItemSelectable() จะส่ง ออปเจ็ค ของ คลาสประเภท ItemSelectable ที่เ ป็น Event Source คืน มา • Object getItem() จะส่ง ออปเจ็ค ของรายการที่ถ ูก เลือ ก คืน มา • int getStateChange() จะส่ง ค่า คงที่ช นิด int ที่ม ีค ่า เป็น SELECTED หรือ DESELECTED เพื่อ ระบุส ถานการณ์เ ลือ กของรายการคืน มา
13.
Event
อื่น ๆ KeyEventเป็น คลาสทีม ก ารสร้า งออปเจ็ค เมือ มี ่ ี ่ เหตุก ารณ์ก ารกดคีย บ อร์ด ์ FocusEvent เป็น คลาสทีม ก ารสร้า งออปเจ็ค เมือ ผู้ใ ช้ ่ ี ่ เลื่อ นอุป กรณ์อ ิน พุต มาชี้ย ง ออปเจ็ค ของส่ว น ั ประกอบกราฟฟิก ใดๆ ComponentEvent เป็น คลาสทีม ก ารสร้า งออปเจ็ค เมือ มี ่ ี ่ เหตุก ารณ์ซ งึ่ ออปเจ็ค ของส่ว นประกอบกราฟฟิก มีก าร เปลี่ย นแปลงเช่น เคลื่อ นทีห รือ ปรับ ขนาด ่ ContainerEvent เป็น คลาสทีม ก ารสร้า งออปเจ็ค เมือ ่ ี ่ มีเ หตุก ารณ์ใ นการใส่ห รือ ยกเลิก ออปเจ็ค ของส่ว น ประกอบกราฟฟิก ลงในออปเจ็ค ของคลาสประเภท
14.
Event
อื่น ๆ AdjustmentEventเป็น คลาสทีม ก ารสร้า งออปเจ็ค เมือ ่ ี ่ มีเ หตุก ารณ์ใ นการปรับ ตำา แหน่ง ชี้ข องออปเจ็ค ของคลาส ScrollBar หรือ ScrollPane TextEvent เป็น คลาสทีม ก ารสร้า งออปเจ็ค เมือ มี ่ ี ่ เหตุก ารณ์ใ นการเปลี่ย นแปลงข้อ ความในออปเจ็ค ของคลาส TextArea
15.
อิน เตอร์เ ฟสประเภท
Listener ภาษาจาวาจะจัด การกับ เหตุก ารณ์โ ดยการสร้า ง ออปเจ็ค ทีส ามารถรับ ฟัง เหตุก ารณ์จ ากคลาสที่ ่ implements อิน เตอร์เ ฟสประเภท Listener ที่ สอดคล้อ งกัน ออปเจ็ค นีจ ะทำา หน้า ที่เ ป็น ้ Event Handler อาทิเ ช่น ออปเจ็ค ทีจ ะจัด การกับ เหตุก ารณ์ป ระเภท ่ ActionEvent จะต้อ ง implements อิน เตอร์เ ฟส ActionListener
16.
อิน เตอร์เ ฟสประเภท
Listener ActionListener เป็น อิน เตอร์เ ฟสสำา หรับ ออปเจ็ค ของ คลาส ActionEvent AdjustmentListener เป็น อิน เตอร์เ ฟสสำา หรับ ออปเจ็ค ของคลาส AdjustmentEvent ComponentListener เป็น อิน เตอร์เ ฟสสำา หรับ ออปเจ็ค ของคลาส ComponentEvent ContainerListener เป็น อิน เตอร์เ ฟสสำา หรับ ออปเจ็ค ของคลาส ContainerEvent FocusListener เป็น อิน เตอร์เ ฟสสำา หรับ ออปเจ็ค ของ คลาส FocusEvent
17.
อิน เตอร์เ ฟสประเภท
Listener ItemListener เป็น อิน เตอร์เ ฟสสำา หรับ ออปเจ็ค ของ คลาส ItemEvent KeyListener เป็น อิน เตอร์เ ฟสสำา หรับ ออปเจ็ค ของ คลาส KeyEvent MouseListener เป็น อิน เตอร์เ ฟสสำา หรับ ออปเจ็ค ของ คลาส MouseEvent MouseMotionListener เป็น อิน เตอร์เ ฟสสำา หรับ ออป เจ็ค ของคลาส MouseEvent
18.
เมธอดทีใ ช้ร ับ
ฟัง เหตุก ารณ์ ่ เมธอดทีใ ช้ร ับ ฟัง ่ อิน เตอร์เ ฟส เหตุก ารณ์ ActionListener addActionListener() ItemListener addItemListener() KeyListener addKeyListener() MouseListener addMouseListener() MouseMotionListener addMouseMotionListener() TextListener addTextListener() FocusListener addFocusListener() AdjustmentListener addAdjustmentListener()
19.
เมธอดทีใ ช้ร ับ
ฟัง เหตุก ารณ์ ่ เมธอดทีใ ช้ร ับ ฟัง ่ อิน เตอร์เ ฟส เหตุก ารณ์ ComponentListener addComponentListener() ContainerListener addContainerListener() WindowListener addWindowListener()
20.
เมธอดที่ต ้อ งลงทะเบีย
นเมื่อ ต้อ งการ จัด การกับ เหตุก ารณ์ อิน เตอร์เ ฟส เมธอดทีต ้อ ง ่ implements keyPressed(KeyEvent) KeyListener keyReleased(KeyEvent) keyTyped(KeyEvent) focusGained(FocusEvent) FocusListener focusLost(FocusEvent) adjustmentValueChanged AdjustmentListener (AdjustmentEvent) componentMoved(ComponentEvent) componentHidden(ComponentEvent) ComponentListener componentResized(ComponentEvent) componentShown(ComponentEvent)
21.
เมธอดที่ต ้อ ง
implements อิน เตอร์เ ฟส เมธอดทีต ้อ ง ่ implements ActionListener actionPerformed(ActionEvent) ItemListener itemStateChanged(ItemEvent) mouseClicked(MouseEvent) mouseEntered(MouseEvent) MouseListener mouseExited(MouseEvent) mousePressed(MouseEvent) mouseReleased(MouseEvent) mouseMoved(MouseEvent) MouseMotionListener mouseDragged(MouseEvent)
22.
เมธอดที่ต ้อ ง
implements อิน เตอร์เ ฟส เมธอดทีต ้อ ง ่ implements 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 อิน เตอร์เ ฟส เมธอดทีต ้อ ง ่ implements windowOpened(WindowEvent) windowClosed(WindowEvent) windowClosing(WindowEvent) WindowListener windowIconified(WindowEvent) windowDeiconified(WindowEvent) windowActivated(WindowEvent) windowDeactivated(WindowEvent) componentAdded(ContainerEvent) ContainerListener componentRemoved(ContainerEvent) TextListener textValueChanged(TextEvent)
24.
การจัด การกับ เหตุก
ารณ์ ภาษาจาวาจะมีว ิธ ีก ารจัด การกับ เหตุก ารณ์ท เ รีย ก ี่ ว่า Delegation Model โดยจะมีห ลัก การดัง นี้ • ออปเจ็ค ของส่ว นประกอบกราฟฟิก ใดๆสามารถเป็น ออปเจ็ค ประเภท Event Source ได้ อาทิเ ช่น ออปเจ็ค ของคลาส Button สามารถเป็น Event Source ของ ActionEvent ได้ • คลาสใดๆสามารถรับ ฟัง เหตุก ารณ์ใ ดๆก็ไ ด้ ถ้า คลาสนั้น implements อิน เตอร์เ ฟสประเภท Listener ที่ส อดคล้อ งกัน อาทิเ ช่น คลาสที่ต ้อ งการรับ ฟัง เหตุก ารณ์ ActionEvent จะต้อ ง implements อิน เตอร์เ ฟสที่ช ื่อ ActionListener • ออปเจ็ค ประเภท Event ที่เ กิด จาก Event Source จะถูก ส่ง ไปยัง ออปเจ็ค ของคลาสที่ส ามารถรับ ฟัง เหตุก ารณ์ ประเภทนั้น
25.
ออปเจ็ค ของคลาสประเภท Event
Handler Event Source ใดต้อ งการทีจ ะจัด การกับ ่ เหตุก ารณ์ใ ดต้อ งลงทะเบีย นเพื่อ รับ ฟัง เหตุก ารณ์ โดยมีร ูป แบบดัง นี้ eventSource.addXxxListener(listener) เราสามารถสร้า งออปเจ็ค ของคลาสประเภท Event Handler ได้ห ลายรูป แบบดัง นี้ • กำา หนดคลาสภายนอกคลาสที่ใ ช้ใ นการจัด การ เหตุก ารณ์ • กำา หนดคลาสที่เ ป็น คลาสภายในอยู่ใ นคลาสที่ใ ช้ใ นการ จัด การเหตุก ารณ์ • กำา หนดให้ค ลาสที่ใ ช้ใ นการจัด การเหตุก ารณ์ implements อิน เตอร์เ ฟสประเภท Listener ที่ส อดคล้อ งกัน และสร้า งออปเจ็ค ของคลาสดัง กล่า วภายในคลาสเอง • กำา หนดคลาสภายในเมธอด (คลาสประเภท
26.
ตัว อย่า งโปรแกรม import
java.awt.*; import java.awt.*; import java.awt.event.*; import java.awt.event.*; public class EventDemo1 {{ public class EventDemo1 public static void main(String args[]) {{ public static void main(String args[]) Frame fr == new Frame("Event Demo"); Frame fr new Frame("Event Demo"); Button bn1 == new Button("Exit"); Button bn1 new Button("Exit"); fr.setLayout(new FlowLayout()); fr.setLayout(new FlowLayout()); bn1.addActionListener(new ActionHandler()); bn1.addActionListener(new ActionHandler()); fr.add(bn1); fr.add(bn1); fr.setSize(200,200); fr.setSize(200,200); ผลลัพ ธ์ท ไ ด้จ ากการรัน โปรแก ี่ fr.setVisible(true); fr.setVisible(true); }} }} public class ActionHandler implements ActionListener {{ public class ActionHandler implements ActionListener public void actionPerformed(ActionEvent ev) {{ public void actionPerformed(ActionEvent ev) System.exit(0); System.exit(0); }} }}
27.
คำา อธิบ ายโปรแกรม
คลาส EventDemo1 มีป ุ่ม ที่ช อ bn1 ซึ่ง ลงทะเบีย นรับ ฟัง ื่ เหตุก ารณ์ป ระเภท ActionEvent จากคำา สั่ง bn1.addActionListener(new ActionHandler()); คำา สั่ง new ActionHandler()เป็น การสร้า งออปเจ็ค ทีใ ช้ ่ ในการจัด การกับ เหตุก ารณ์ป ระเภท ActionEvent คลาส ActionHandler จะต้อ ง implements อิน เตอร์เ ฟส ชื่อ ActionListener เมธอดทีต ้อ ง implements ่ ในคลาสคือ public void actionPerformed(ActionEvent ev)
28.
ตัว อย่า งโปรแกรม import
java.awt.*; import java.awt.*; import java.awt.event.*; import java.awt.event.*; public class EventDemo2 {{ public class EventDemo2 private Frame fr; private Frame fr; private TextField tf; private TextField tf; public EventDemo2() {{ public EventDemo2() fr == new Frame("Event Demo"); fr new Frame("Event Demo"); tf == new TextField(15); tf new TextField(15); fr.setLayout(new FlowLayout()); fr.setLayout(new FlowLayout()); fr.add(tf); fr.add(tf); fr.setFont(new Font("TimesRoman",Font.BOLD,16)); fr.setFont(new Font("TimesRoman",Font.BOLD,16)); fr.addMouseMotionListener(new MouseHandler()); fr.addMouseMotionListener(new MouseHandler()); fr.setSize(200,200); fr.setSize(200,200); fr.setVisible(true); fr.setVisible(true); }} public class MouseHandler implements MouseMotionListener {{ public class MouseHandler implements MouseMotionListener
29.
ตัว อย่า งโปรแกรม
public void mouseDragged(MouseEvent ev) {{ public void mouseDragged(MouseEvent ev) tf.setText("X="+ev.getX()+" Y="+ev.getY()); tf.setText("X="+ev.getX()+" Y="+ev.getY()); }} public void mouseMoved(MouseEvent ev) {{ }} public void mouseMoved(MouseEvent ev) }} public static void main(String args[]) {{ public static void main(String args[]) EventDemo2 obj == new EventDemo2(); EventDemo2 obj new EventDemo2(); }} }} ผลลัพ ธ์ท ไ ด้จ ากการรัน โปรแกรม ี่
30.
คำา อธิบ ายโปรแกรม
ตัว อย่า งโปรแกรม EventDemo2 มีก ารขึ้น ทะ เบีย นออปเจ็ค ของคลาส Frame เพือ รับ ฟัง ่ เหตุก ารณ์ MouseEvent จากคำา สั่ง fr.addMouseMotionListener(new MouseHandler()); โปรแกรมนี้จ ะแสดงตำา แหน่ง ของเมาส์เ มือ มีก าร ่ เลื่อ นเมาส์ คลาส MouseHandler เป็น คลาสภายใน ทำา ให้ สามารถเรีย กใช้ค ุณ ลัก ษณะของคลาส EventDemo2 ไ ด้ เช่น ออปเจ็ค tf ของคลาส TextField
31.
ตัว อย่า งแสดงการสร้า
งออปเจ็ค ภายในคลาสเดีย วกัน import java.awt.*; import java.awt.*; import java.awt.event.*; import java.awt.event.*; public class EventDemo3 implements WindowListener{ public class EventDemo3 implements WindowListener{ public static void main(String args[]) {{ public static void main(String args[]) EventDemo3 obj == new EventDemo3(); EventDemo3 obj new EventDemo3(); obj.init(); obj.init(); }} public void init() {{ public void init() Frame fr == new Frame("Event Demo"); Frame fr new Frame("Event Demo"); fr.addWindowListener(this); fr.addWindowListener(this); fr.add(bn1); fr.add(bn1); fr.setSize(200,200); fr.setSize(200,200); fr.setVisible(true); fr.setVisible(true); }} public void windowClosing(WindowEvent ev) {{ public void windowClosing(WindowEvent ev) System.exit(0); System.exit(0); }}
32.
ตัว อย่า งแสดงการสร้า
งออปเจ็ค ภายในคลาสเดีย วกัน public void windowOpened(WindowEvent ev) {{ }} public void windowOpened(WindowEvent ev) public void windowClosed(WindowEvent ev) {{ }} public void windowClosed(WindowEvent ev) public void windowIconified(WindowEvent ev) {{ }} public void windowIconified(WindowEvent ev) public void windowDeiconified(WindowEvent ev) {{ }} public void windowDeiconified(WindowEvent ev) public void windowActivated(WindowEvent ev) {{ }} public void windowActivated(WindowEvent ev) public void windowDeactivated(WindowEvent ev) {{ }} public void windowDeactivated(WindowEvent ev) }} ผลลัพ ธ์ท ไ ด้จ ากการรัน โปรแกรม ี่
33.
คำา อธิบ ายโปรแกรม
this หมายถึง ออปเจ็ค ของคลาสเดีย วกัน ตัว อย่า งโปรแกรมใช้อ อปเจ็ค this ในการจัด การ กับ WindowEvent จากคำา สั่ง fr.addWindowListener(this); คลาส EventDemo3 ต้อ ง implements อิน เตอร์เ ฟส WindowListener คำา สั่ง System.exit(0); ใน เมธอด windowClosing()ทำา ให้ส ามารถออกจากโปรแกรมได้ โดยการคลิก เมาส์ท เ ครื่อ งหมายกากบาทตรง ี่ Title Bar
34.
การรับ ฟัง เหตุก
ารณ์ห ลาย เหตุก ารณ์ Event Source สามารถทีจ ะขึ้น ทะเบีย นรับ ฟัง ่ เหตุก ารณ์ห ลายประเภทได้ เช่น • fr.addMouseMotionListener(this); • fr.addWindowListener(this); คลาสใดๆสามารถ implements อิน เตอร์เ ฟสหลาย ตัว ได้ เช่น • public class EventDemo4 implements MouseMotionListener, WindowListener EventHandler สามารถทีจ ะจัด การกับ Event ่ Source ได้ห ลายตัว และ ออปเจ็ค ของคลาส ประเภท Event จะมีเ มธอดในการทีจ ะแยก Event ่ Source ได้
35.
ตัว อย่า งโปรแกรม import
java.awt.*; import java.awt.*; import java.awt.event.*; import java.awt.event.*; public class EventDemo4 implements MouseMotionListener, public class EventDemo4 implements MouseMotionListener, WindowListener {{ WindowListener private Frame fr; private Frame fr; private TextField tf; private TextField tf; public EventDemo4() {{ public EventDemo4() fr == new Frame("Event Demo"); fr new Frame("Event Demo"); tf == new TextField(15); tf new TextField(15); fr.setLayout(new FlowLayout()); fr.setLayout(new FlowLayout()); fr.add(tf); fr.add(tf); fr.setFont(new Font("TimesRoman",Font.BOLD,16)); fr.setFont(new Font("TimesRoman",Font.BOLD,16)); fr.addMouseMotionListener(this); fr.addMouseMotionListener(this); fr.addWindowListener(this); fr.addWindowListener(this); fr.setSize(200,200); fr.setSize(200,200); fr.setVisible(true); fr.setVisible(true); }}
36.
ตัว อย่า งโปรแกรม
public static void main(String args[]) {{ public static void main(String args[]) EventDemo4 obj == new EventDemo4(); EventDemo4 obj new EventDemo4(); }} public void mouseDragged(MouseEvent ev) {{ public void mouseDragged(MouseEvent ev) tf.setText("X="+ev.getX()+" Y="+ev.getY()); tf.setText("X="+ev.getX()+" Y="+ev.getY()); }} public void mouseMoved(MouseEvent ev) {{ }} public void mouseMoved(MouseEvent ev) public void windowClosing(WindowEvent ev) {{ public void windowClosing(WindowEvent ev) System.exit(0); ผลลัพ ธ์ท ไ ด้จ ากการรัน โปรแ ี่ System.exit(0); }} public void windowOpened(WindowEvent ev) {{ }} public void windowOpened(WindowEvent ev) public void windowClosed(WindowEvent ev) {{ }} public void windowClosed(WindowEvent ev) public void windowIconified(WindowEvent ev) {{ }} public void windowIconified(WindowEvent ev) public void windowDeiconified(WindowEvent ev) {{ }} public void windowDeiconified(WindowEvent ev) public void windowActivated(WindowEvent ev) {{ }} public void windowActivated(WindowEvent ev) public void windowDeactivated(WindowEvent ev) {{ }} public void windowDeactivated(WindowEvent ev) }}
37.
คลาสประเภท Event Adapter
คลาสประเภท Event Adapter คือ คลาสที่ไ ด้ implements อิน เตอร์เ ฟส ประเภท Listener ไว้แ ล้ว คลาสประเภท Event Adapter นัน ได้ก ำา หนด ้ เมธอดต่า งๆของอิน เตอร์เ ฟสทีต ้อ งเขีย น ไว้แ ล้ว ่ แต่จ ะเป็น บล็อ กคำา สัง ทีไ ม่ม ค ำา สัง ใดๆอยูภ ายใน ่ ่ ี ่ ่ บล็อ ก คลาสประเภท Event Adapter จะช่ว ยทำา ให้เ ขีย น โปรแกรมทีเ ป็น คลาส ประเภท Event Handler ได้ ่ ง่า ยขึ้น โดยลดจำา นวนเมธอดทีจ ะต้อ งเขีย นบล็อ ก ่ คำา สั่ง
38.
คลาสประเภท 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
39.
ตัว อย่า งโปรแกรม import
java.awt.*; import java.awt.*; import java.awt.event.*; import java.awt.event.*; public class EventDemo5 {{ public class EventDemo5 public static void main(String args[]) {{ public static void main(String args[]) Frame fr == new Frame("Event Demo"); Frame fr new Frame("Event Demo"); fr.addWindowListener(new WindowHandler()); fr.addWindowListener(new WindowHandler()); fr.setSize(200,200); fr.setSize(200,200); fr.setVisible(true); fr.setVisible(true); }} }} public class WindowHandler extends WindowAdapter {{ public class WindowHandler extends WindowAdapter public void windowClosing(WindowEvent ev) {{ public void windowClosing(WindowEvent ev) System.exit(0); System.exit(0); }} }}
40.
การสร้า งคลาสแบบ anonymous
เราสามารถกำา หนดคลาสทัง หมดให้อ ยู่ภ ายใน ้ เมธอดทีเ รีย กใช้ง าน ่ คลาสประเภทนีเ รีย กว่า คลาสประเภท ้ anonymous คลาสประเภท anonymous นิย มใช้ใ นการ จัด การ กับ Event เช่น การปิด Frame
41.
ตัว อย่า งโปรแกรม import
java.awt.*; import java.awt.*; import java.awt.event.*; import java.awt.event.*; public class EventDemo6 {{ public class EventDemo6 public static void main(String args[]) {{ public static void main(String args[]) Frame fr == new Frame("Event Demo"); Frame fr new Frame("Event Demo"); fr.addWindowListener(new WindowAdapter() {{ fr.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent ev) {{ public void windowClosing(WindowEvent ev) System.exit(0); System.exit(0); }} }); }); fr.setSize(200,200); fr.setSize(200,200); fr.setVisible(true); fr.setVisible(true); }} }}
42.
สรุป เนื้อ หาของบท
ออปเจ็ค ของคลาสประเภท Event ในแพจเก็จ java.awt.event จะถูก สร้า งขึ้น เมือ มีก ารกระทำา บาง ่ อย่า งเกิด ขึ้น กับ ตัว ใส่ส ว นประกอบหรือ ส่ว น ่ ประกอบกราฟฟิก เช่น ActionEvent เกิด ขึ้น เมือ มี ่ การกด Button หรือ WindowEvent เกิด ขึ้น เมือ มีก ารปิด ่ Frame การจะจัด การกับ Event ประเภทใดนัน โดยทัว ไป ้ ่ จะต้อ งสร้า งออปเจ็ค ของคลาสที่ implements อิน เตอร์เ ฟสทีส อดคล้อ งกัน กับ Event นัน ด้ว ย เช่น ่ ้ ถ้า ต้อ งการจัด การกับ WindowEvent จะต้อ งสร้า งออป เจ็ค ของคลาสที่ implements อิน เตอร์เ ฟส WindowListener โดยการสร้า งออปเจ็ค อาจสร้า งจาก คลาสภายนอก คลาสภายใน คลาสเดีย วกัน หรือ
43.
สรุป เนื้อ หาของบท
คลาสใดๆสามารถ implements อิน เตอร์เ ฟสได้ห ลาย ตัว ทำา ให้ส ามารถทีจ ะขึ้น ทะเบีย นรับ ฟัง เหตุก ารณ์ ่ ได้ห ลายเหตุก ารณ์ คลาสประเภท Event Adapter คือ คลาสที่ไ ด้ implements อิน เตอร์เ ฟส ประเภท Listener ไว้แ ล้ว โดยได้ก ำา หนดเมธอดต่า งๆของอิน เตอร์เ ฟสทีต ้อ ง ่ เขีย น ไว้แ ล้ว แต่จ ะเป็น บล็อ กคำา สั่ง ทีไ ม่ม ค ำา สั่ง ใดๆ ่ ี อยูภ ายในบล็อ ก ่
44.
แบบฝึก หัด ข้อ
ที่ 1 • ทดลองเขีย นโปรแกรมจัด การเหตุก ารณ์เ พื่อ ทำา ให้ โปรแกรม GUI ในแบบฝึก หัด บทที่ 6 ให้ส ามารถทำา งาน ได้อ ย่า งถูก ต้อ ง