การจัดการเหตุการณ์ใน Java: คืออะไรและทำงานอย่างไร
เผยแพร่แล้ว: 2020-03-21โปรแกรมใดๆ ก็ตามที่เป็นอินเทอร์เฟซผู้ใช้แบบกราฟิกหรือแบบ GUI รวมถึงแอปพลิเคชัน Java สำหรับ Windows จะถูกขับเคลื่อนโดยเหตุการณ์ เพื่อให้โปรแกรมเช่นแอปพลิเคชัน Java มีประโยชน์ จำเป็นต้องจัดเตรียมการตอบสนองต่อคำสั่งหรืออินพุตจากผู้ใช้ แอปพลิเคชัน Java มีเหตุการณ์เพื่อจับภาพการกระทำของผู้ใช้ ก่อนที่เราจะพูดถึงการจัดการเหตุการณ์ใน Java เรามาเริ่มด้วยการพูดถึงเหตุการณ์กันก่อน
สารบัญ
เหตุการณ์คืออะไร?
เหตุการณ์มีความหมายและความสำคัญเหมือนกันในทุกภาษาการเขียนโปรแกรม สิ่งเหล่านี้เป็นเอฟเฟกต์ภายนอกที่ควบคุมโดยผู้ใช้ และทำให้แอปพลิเคชันของคุณทำงานตามเงื่อนไขที่กำหนดไว้ล่วงหน้าเพื่อบันทึกการตอบสนองต่อการกระทำต่างๆ ของผู้ใช้ เหตุการณ์สามารถเรียกได้ว่าเป็นวัตถุที่มีชีวิตชีวาเมื่อมีการเปลี่ยนแปลงภายใน GUI
ตัวอย่างของเหตุการณ์ใน Java ได้แก่ การพิมพ์อักขระหรือข้อความ การคลิกที่กล่องคำสั่งผสม การคลิกที่ปุ่ม หรือการดำเนินการอื่นๆ จากฝั่งผู้ใช้ การกระทำดังกล่าวทำให้เกิดเหตุการณ์ ซึ่งส่งผลให้เกิดการสร้างวัตถุเหตุการณ์ที่เกี่ยวข้องกับเหตุการณ์นั้น
ตัวอย่างเช่น หากผู้ใช้ป้อนข้อมูลบางอย่าง (การกระทำของผู้ใช้ที่ทริกเกอร์เหตุการณ์) แอปพลิเคชันจะสร้างเอาต์พุตโดยใส่กล่องโต้ตอบหรือแสดงข้อมูล (อ็อบเจ็กต์เหตุการณ์) พฤติกรรมที่เกี่ยวข้องกับเหตุการณ์เหล่านี้เป็นส่วนหนึ่งของกลไกการจัดการเหตุการณ์ของ Java และมีอยู่ในไลบรารี Swing GUI สิ่งสำคัญที่ควรทราบคือต้องเชื่อมโยงแหล่งที่มาของทุกเหตุการณ์และผู้ฟังเหตุการณ์ หากไม่เป็นเช่นนั้น การทริกเกอร์เหตุการณ์จะไม่ดำเนินการใดๆ
เหตุใดโปรแกรมหรือแอปพลิเคชันจึงต้องมีการขับเคลื่อนด้วยเหตุการณ์
ก่อนที่การจัดการเหตุการณ์จะเข้ามาในรูปภาพ โปรแกรมต้องรวบรวมข้อมูลผู้ใช้ทั้งหมดเองเพื่อให้รู้ว่ากำลังทำอะไรอยู่ในช่วงเวลาที่กำหนด ซึ่งหมายความว่าหลังจากรันหรือเริ่มต้น โปรแกรมมักจะวนซ้ำครั้งใหญ่ที่รอให้ผู้ใช้ทำบางสิ่ง
ดังนั้น โปรแกรมจึงมองหาการดำเนินการใดๆ ตั้งแต่การกดปุ่มไปจนถึงการเลื่อนตัวเลื่อน หลังจากที่ได้รู้ว่ามีบางอย่างเกิดขึ้นจากฝั่งผู้ใช้แล้ว มันก็เตรียมตัวเองที่จะตอบสนองอย่างเหมาะสม นี้เรียกว่าการเลือกตั้ง แม้ว่าการสำรวจจะทำให้งานสำเร็จ แต่บ่อยครั้งก็พบว่าเป็นงานที่ไม่สามารถจัดการได้และใช้เวลานานเกินไป

อ่าน: คำถามและคำตอบสัมภาษณ์นักพัฒนา Java
หากเราพิจารณาใช้สำหรับการใช้งานในยุคปัจจุบัน แสดงว่าไม่ตรงตามข้อกำหนดจริงๆ เหตุผลหลักสองประการทำให้การหยั่งเสียงไม่เหมาะสมสำหรับแอปพลิเคชันสมัยใหม่ – การโพลใส่โค้ดที่เกี่ยวข้องกับเหตุการณ์ทั้งหมดไว้ในลูปการทำซ้ำขนาดใหญ่ และการโต้ตอบที่เกิดขึ้นภายในตำแหน่งนี้ซับซ้อนเกินไป นอกจากนี้ การหยั่งเสียงยังทำให้โปรแกรมเข้าสู่การวนซ้ำที่ไม่สิ้นสุด ซึ่งส่งผลให้รอบ CPU หมดลงโดยไม่มีการรับประกันการดำเนินการใดๆ จากผู้ใช้
Abstract Window Toolkit หรือ AWT ได้ดำเนินการแล้วและมีความสัมพันธ์กับรูปแบบการทำงานที่แตกต่างกันสำหรับการแก้ปัญหาที่กล่าวถึงข้างต้น โมเดลใหม่นี้เป็นโปรแกรมที่ขับเคลื่อนด้วยเหตุการณ์ ด้วย AWT โปรแกรมไม่จำเป็นต้องมองหาเหตุการณ์ที่ผู้ใช้สร้างขึ้น เป็นรันไทม์ของ Java ที่ทำงานนี้ มันทำให้โปรแกรมสนิทสนมทันทีที่มีเหตุการณ์เกิดขึ้น ช่วยประหยัดทรัพยากรอันมีค่าจากความเหนื่อยล้าและจัดการการโต้ตอบกับผู้ใช้ได้ดียิ่งขึ้น
ตัวจัดการเหตุการณ์ใน Java คืออะไรและทำงานอย่างไร
มาพูดถึงหัวข้อหลักที่เรากำหนดไว้เพื่อจัดการกัน การจัดการเหตุการณ์ใน Java ทำงานอย่างไร
ดังที่ได้กล่าวไว้ก่อนหน้านี้ เหตุการณ์คือการกระทำของผู้ใช้หรือผลกระทบภายนอกที่ทำให้แอปพลิเคชันทำงานในลักษณะใดลักษณะหนึ่ง ใน Java ส่วนประกอบ AWT รวมถึงกล่องข้อความ ปุ่ม และอื่นๆ มีหน้าที่สร้างเหตุการณ์ ทันทีที่มีการสร้างเหตุการณ์ ผู้ฟังจะจัดการและดำเนินการตามความเหมาะสม

การจัดการเหตุการณ์ใน Java ประกอบด้วยสี่องค์ประกอบ สิ่งเหล่านี้สามารถเรียกได้ว่าเป็นตัวจัดการเหตุการณ์
1. แหล่งที่มาของเหตุการณ์ : แหล่งที่มาของเหตุการณ์ที่สร้างเหตุการณ์ส่วนใหญ่เป็นองค์ประกอบ AWT คุณสามารถรัน คำสั่ง java.awt.component เพื่อเรียนรู้เกี่ยวกับส่วนประกอบที่อาจหรือไม่มีบทบาทใดๆ ในการสร้างเหตุการณ์ คอมโพเนนต์เป็นคลาสย่อยของคลาสซอร์สดั้งเดิม แหล่งที่มาของเหตุการณ์อาจเป็นอะไรก็ได้ตั้งแต่กล่องข้อความและกล่องคำสั่งผสมไปจนถึงปุ่ม และอื่นๆ
อ่าน: สถาปัตยกรรม MVC ใน Java
2. คลาสเหตุการณ์ : ใน Java คลาสเหล่านี้เป็นคลาสที่อธิบายเกือบทุกองค์ประกอบที่เกี่ยวข้องกับการสร้างเหตุการณ์ สิ่งเหล่านี้เรียกว่าประเภทเหตุการณ์ ต่อไปนี้คือคลาสเหตุการณ์ทั่วไปบางส่วน:
- ActionEvent : คลาสเหตุการณ์หรือประเภทเหตุการณ์นี้แสดงถึงเหตุการณ์ที่เกี่ยวข้องกับการคลิกองค์ประกอบกราฟิก เช่น ปุ่มหรือรายการ ผู้ฟังที่เกี่ยวข้องกับคลาสนี้คือ ActionListener
- KeyEvent : คลาสเหตุการณ์นี้แสดงถึงเหตุการณ์ที่เกี่ยวข้องกับการกดและปล่อยคีย์ Listener ที่เชื่อมโยงกับคลาสนี้คือ KeyListener
- ContainerEvent : ประเภทเหตุการณ์นี้แสดงถึงเหตุการณ์ที่เกิดขึ้นกับคอนเทนเนอร์ GUI คลาสนี้เชื่อมโยงกับเหตุการณ์ใดๆ ที่การกระทำของผู้ใช้เกี่ยวข้องกับการเพิ่มหรือลบออบเจกต์ออกจาก GUI Listener ที่เกี่ยวข้องสำหรับคลาสนี้คือ ContainerListener
- MouseEvent : คลาสนี้แสดงถึงเหตุการณ์ทั้งหมดที่เกี่ยวข้องกับการคลิกหรือกดเมาส์ ผู้ฟังสำหรับคลาสนี้คือ MouseListener
- WindowEvent : คลาสหรือประเภทของเหตุการณ์นี้แสดงถึงเหตุการณ์ที่เกี่ยวข้องกับการดำเนินการใด ๆ ที่เกี่ยวข้องกับหน้าต่าง การปิด เปิดใช้งาน หรือปิดใช้งานหน้าต่างอยู่ภายใต้คลาสนี้ Listener ที่เกี่ยวข้องสำหรับคลาสนี้คือ WindowListener
3. Event Listeners : นี่คืออินเทอร์เฟซของ Java ที่มีวิธีการต่างๆ ที่สามารถใช้ในคลาสต่างๆ ที่นำไปใช้งาน งานของผู้ฟังเหตุการณ์เกี่ยวข้องกับการฟังเหตุการณ์และประมวลผลอย่างเหมาะสมเมื่อเกิดขึ้น เกือบทุกองค์ประกอบใน Java มีผู้ฟังเฉพาะที่จัดการเหตุการณ์ใด ๆ ที่ส่วนประกอบนั้นสร้างขึ้น ActionListener จัดการเหตุการณ์ที่เกี่ยวข้องกับรายการ ปุ่ม ฟิลด์ข้อความ และเมนู
4. Event Adapters : หากโปรแกรมนำเสนอวิธีการที่เป็นนามธรรมมากเกินไปสำหรับผู้ฟังที่จะลบล้าง การรวบรวมก็อาจทำได้ยาก ตัวอย่างเช่น หากเราต้องการปิดเฟรม มีเจ็ดวิธีนามธรรมของ WindowListener ที่เราจำเป็นต้องแทนที่ เพื่อลดความซับซ้อนและการเข้ารหัสจำนวนมาก Java มีอะแดปเตอร์เหตุการณ์ อะแด็ปเตอร์เหตุการณ์ถูกแทนที่เมธอดนามธรรมแล้ว
บทสรุป
สิ่งสำคัญคือต้องจำไว้ว่าแหล่งที่มาของเหตุการณ์และผู้ฟังสามารถโต้ตอบกันได้ ดังนั้น หลายเหตุการณ์ที่อยู่ในคลาสเดียวกันสามารถจัดการได้โดยผู้ฟังคนเดียว ซึ่งหมายความว่าผู้ฟังหนึ่งคนสามารถจัดการเหตุการณ์ทั้งหมดที่เกี่ยวข้องกับองค์ประกอบเดียวกันซึ่งดำเนินการคล้ายคลึงกัน ในบรรทัดที่คล้ายกัน ผู้ฟังมากกว่าหนึ่งคนสามารถจัดการเหตุการณ์เดียวได้ก็ต่อเมื่อการออกแบบของโปรแกรมอนุญาต

มีเหตุผล?
ใช่?
ไม่?
ติดต่อเราเพื่อเรียนรู้เกี่ยวกับเซสชันที่ครอบคลุมเกี่ยวกับการจัดการเหตุการณ์ใน Java คุณจะไม่เสียใจเลย!
หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับ Java สำหรับการพัฒนาเว็บ โปรดดูประกาศนียบัตร PG ของ upGrad & IIIT-B ด้านการพัฒนาซอฟต์แวร์แบบครบวงจร ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 500 ชั่วโมง โครงการและการมอบหมายมากกว่า 9 รายการ สถานะศิษย์เก่า IIIT-B โครงการหลักที่นำไปปฏิบัติได้จริง และความช่วยเหลือด้านงานกับบริษัทชั้นนำ