Enviar pesquisa
Carregar
๋Java Programming [7/12] : GUI Event Handling
•
1 gostou
•
2,215 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 [1/12] : Introduction
Java Programming [1/12] : Introduction
IMC Institute
การตอบสนองต่อสิ่งเร้าของพืช
การตอบสนองต่อสิ่งเร้าของพืช
dnavaroj
การวิเคราะห์ SWOT & TOWS Matrix
การวิเคราะห์ SWOT & TOWS Matrix
อาบูญาลีละฮ์ บินอับดุลฆอนีย์
บทที่ 10 การประชุม
บทที่ 10 การประชุม
Aj.Mallika Phongphaew
แบบสอบถามความคิดเห็นสำหรับผู้เชี่ยวชาญด้านเนื้อหาเกี่ยวกับ
แบบสอบถามความคิดเห็นสำหรับผู้เชี่ยวชาญด้านเนื้อหาเกี่ยวกับ
บุญรักษา ของฉัน
Power point นำเสนองานวิจัย
Power point นำเสนองานวิจัย
ชัชจิรา จำปาทอง
4การคัดเลือกโครงการ
4การคัดเลือกโครงการ
pop Jaturong
Recomendados
Java Programming [5/12] : Build Graphical User Interface
Java Programming [5/12] : Build Graphical User Interface
IMC Institute
Java Programming [1/12] : Introduction
Java Programming [1/12] : Introduction
IMC Institute
การตอบสนองต่อสิ่งเร้าของพืช
การตอบสนองต่อสิ่งเร้าของพืช
dnavaroj
การวิเคราะห์ SWOT & TOWS Matrix
การวิเคราะห์ SWOT & TOWS Matrix
อาบูญาลีละฮ์ บินอับดุลฆอนีย์
บทที่ 10 การประชุม
บทที่ 10 การประชุม
Aj.Mallika Phongphaew
แบบสอบถามความคิดเห็นสำหรับผู้เชี่ยวชาญด้านเนื้อหาเกี่ยวกับ
แบบสอบถามความคิดเห็นสำหรับผู้เชี่ยวชาญด้านเนื้อหาเกี่ยวกับ
บุญรักษา ของฉัน
Power point นำเสนองานวิจัย
Power point นำเสนองานวิจัย
ชัชจิรา จำปาทอง
4การคัดเลือกโครงการ
4การคัดเลือกโครงการ
pop Jaturong
ฟังก์ชันเชิงเส้น
ฟังก์ชันเชิงเส้น
Y'Yuyee Raksaya
61 ลำดับและอนุกรม ตอนที่3_ลิมิตของลำดับ
61 ลำดับและอนุกรม ตอนที่3_ลิมิตของลำดับ
กลุ่มสาระการเรียนรู้คณิตศาสตร์ โรงเรียนอุตรดิตถ์
องค์ประกอบของหลักสูตร
องค์ประกอบของหลักสูตร
Sunisa199444
โครงสร้างคลอโรพลาส
โครงสร้างคลอโรพลาส
Oui Nuchanart
การบริหารงานวิชาการ
การบริหารงานวิชาการ
Twatchai Tangutairuang
ใบความรู้ Powerpoint 2010
ใบความรู้ Powerpoint 2010
สุดรัก หวานใจ
สารลดแรงตึงผิวในผงซักฟอก
สารลดแรงตึงผิวในผงซักฟอก
adriamycin
การศึกษาการจัดการเรียนการสอนแบบ CBL
การศึกษาการจัดการเรียนการสอนแบบ CBL
Emmy Nichanan
5 1
5 1
Pannathat Champakul
การบริหารงานวิชาการ
การบริหารงานวิชาการ
Watcharasak Chantong
รูปเล่มวิชาโครงงาน
รูปเล่มวิชาโครงงาน
AjBenny Pong
การผลิตและใช้สื่อการเรียนการสอนวิทยาศาสตร์ นายกอบวิทย์ พิริยะวัฒน์
การผลิตและใช้สื่อการเรียนการสอนวิทยาศาสตร์ นายกอบวิทย์ พิริยะวัฒน์
Kobwit Piriyawat
4ดุษณีย์ (1)
4ดุษณีย์ (1)
somdetpittayakom school
กรณีตัวอย่างการวิเคราะห์สภาพโรงเรียนด้วยเทคนิคSwot
กรณีตัวอย่างการวิเคราะห์สภาพโรงเรียนด้วยเทคนิคSwot
Weerachai Jansook
เอกสารประกอบการสอน เรื่องวิวัฒนาการ
เอกสารประกอบการสอน เรื่องวิวัฒนาการ
Biobiome
บทที่ 6 สมบัติของสาร
บทที่ 6 สมบัติของสาร
Thepsatri Rajabhat University
ชุดกิจกรรมการเรียนรู้ เรื่องการจำแนกสาร ชุดที่ 1 การแยกสารด้วยวิธีการกรอง
ชุดกิจกรรมการเรียนรู้ เรื่องการจำแนกสาร ชุดที่ 1 การแยกสารด้วยวิธีการกรอง
ชลธิกาญจน์ จินาจันทร์
Is2 การสื่อสารและการนำเสนอ กลุ่ม1
Is2 การสื่อสารและการนำเสนอ กลุ่ม1
พัน พัน
บทที่ 1 ที่มาและความสำคัญ
บทที่ 1 ที่มาและความสำคัญ
neeranuch wongkom
บทที่ 7 อำนาจและภาวะผู้นำ
บทที่ 7 อำนาจและภาวะผู้นำ
Aj.Mallika Phongphaew
Java Programming: การจัดการกับเหตุการณ์กราฟิก
Java Programming: การจัดการกับเหตุการณ์กราฟิก
Thanachart Numnonda
P3
P3
krumo
Mais conteúdo relacionado
Mais procurados
ฟังก์ชันเชิงเส้น
ฟังก์ชันเชิงเส้น
Y'Yuyee Raksaya
61 ลำดับและอนุกรม ตอนที่3_ลิมิตของลำดับ
61 ลำดับและอนุกรม ตอนที่3_ลิมิตของลำดับ
กลุ่มสาระการเรียนรู้คณิตศาสตร์ โรงเรียนอุตรดิตถ์
องค์ประกอบของหลักสูตร
องค์ประกอบของหลักสูตร
Sunisa199444
โครงสร้างคลอโรพลาส
โครงสร้างคลอโรพลาส
Oui Nuchanart
การบริหารงานวิชาการ
การบริหารงานวิชาการ
Twatchai Tangutairuang
ใบความรู้ Powerpoint 2010
ใบความรู้ Powerpoint 2010
สุดรัก หวานใจ
สารลดแรงตึงผิวในผงซักฟอก
สารลดแรงตึงผิวในผงซักฟอก
adriamycin
การศึกษาการจัดการเรียนการสอนแบบ CBL
การศึกษาการจัดการเรียนการสอนแบบ CBL
Emmy Nichanan
5 1
5 1
Pannathat Champakul
การบริหารงานวิชาการ
การบริหารงานวิชาการ
Watcharasak Chantong
รูปเล่มวิชาโครงงาน
รูปเล่มวิชาโครงงาน
AjBenny Pong
การผลิตและใช้สื่อการเรียนการสอนวิทยาศาสตร์ นายกอบวิทย์ พิริยะวัฒน์
การผลิตและใช้สื่อการเรียนการสอนวิทยาศาสตร์ นายกอบวิทย์ พิริยะวัฒน์
Kobwit Piriyawat
4ดุษณีย์ (1)
4ดุษณีย์ (1)
somdetpittayakom school
กรณีตัวอย่างการวิเคราะห์สภาพโรงเรียนด้วยเทคนิคSwot
กรณีตัวอย่างการวิเคราะห์สภาพโรงเรียนด้วยเทคนิคSwot
Weerachai Jansook
เอกสารประกอบการสอน เรื่องวิวัฒนาการ
เอกสารประกอบการสอน เรื่องวิวัฒนาการ
Biobiome
บทที่ 6 สมบัติของสาร
บทที่ 6 สมบัติของสาร
Thepsatri Rajabhat University
ชุดกิจกรรมการเรียนรู้ เรื่องการจำแนกสาร ชุดที่ 1 การแยกสารด้วยวิธีการกรอง
ชุดกิจกรรมการเรียนรู้ เรื่องการจำแนกสาร ชุดที่ 1 การแยกสารด้วยวิธีการกรอง
ชลธิกาญจน์ จินาจันทร์
Is2 การสื่อสารและการนำเสนอ กลุ่ม1
Is2 การสื่อสารและการนำเสนอ กลุ่ม1
พัน พัน
บทที่ 1 ที่มาและความสำคัญ
บทที่ 1 ที่มาและความสำคัญ
neeranuch wongkom
บทที่ 7 อำนาจและภาวะผู้นำ
บทที่ 7 อำนาจและภาวะผู้นำ
Aj.Mallika Phongphaew
Mais procurados
(20)
ฟังก์ชันเชิงเส้น
ฟังก์ชันเชิงเส้น
61 ลำดับและอนุกรม ตอนที่3_ลิมิตของลำดับ
61 ลำดับและอนุกรม ตอนที่3_ลิมิตของลำดับ
องค์ประกอบของหลักสูตร
องค์ประกอบของหลักสูตร
โครงสร้างคลอโรพลาส
โครงสร้างคลอโรพลาส
การบริหารงานวิชาการ
การบริหารงานวิชาการ
ใบความรู้ Powerpoint 2010
ใบความรู้ Powerpoint 2010
สารลดแรงตึงผิวในผงซักฟอก
สารลดแรงตึงผิวในผงซักฟอก
การศึกษาการจัดการเรียนการสอนแบบ CBL
การศึกษาการจัดการเรียนการสอนแบบ CBL
5 1
5 1
การบริหารงานวิชาการ
การบริหารงานวิชาการ
รูปเล่มวิชาโครงงาน
รูปเล่มวิชาโครงงาน
การผลิตและใช้สื่อการเรียนการสอนวิทยาศาสตร์ นายกอบวิทย์ พิริยะวัฒน์
การผลิตและใช้สื่อการเรียนการสอนวิทยาศาสตร์ นายกอบวิทย์ พิริยะวัฒน์
4ดุษณีย์ (1)
4ดุษณีย์ (1)
กรณีตัวอย่างการวิเคราะห์สภาพโรงเรียนด้วยเทคนิคSwot
กรณีตัวอย่างการวิเคราะห์สภาพโรงเรียนด้วยเทคนิคSwot
เอกสารประกอบการสอน เรื่องวิวัฒนาการ
เอกสารประกอบการสอน เรื่องวิวัฒนาการ
บทที่ 6 สมบัติของสาร
บทที่ 6 สมบัติของสาร
ชุดกิจกรรมการเรียนรู้ เรื่องการจำแนกสาร ชุดที่ 1 การแยกสารด้วยวิธีการกรอง
ชุดกิจกรรมการเรียนรู้ เรื่องการจำแนกสาร ชุดที่ 1 การแยกสารด้วยวิธีการกรอง
Is2 การสื่อสารและการนำเสนอ กลุ่ม1
Is2 การสื่อสารและการนำเสนอ กลุ่ม1
บทที่ 1 ที่มาและความสำคัญ
บทที่ 1 ที่มาและความสำคัญ
บทที่ 7 อำนาจและภาวะผู้นำ
บทที่ 7 อำนาจและภาวะผู้นำ
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 ให้ส ามารถทำา งาน ได้อ ย่า งถูก ต้อ ง