ก่อนหน้านี้โปรแกรมใช้วิธีการอินพุตและเอาต์พุตที่ง่ายที่สุด โปรแกรมสมัยใหม่ต้องการการใช้งานอินเทอร์เฟซผู้ใช้กราฟิก (GUI) ซึ่งรวมถึงเมนูปุ่ม ฯลฯ ผู้ใช้เลือกตัวเลือกในปุ่มเมนูและคลิกผ่านเมาส์เพื่อสั่งโมดูลฟังก์ชันโปรแกรม บทนี้เรียนรู้วิธีการเขียนการทดลองทางวิทยาศาสตร์ GUI ในภาษา Java และวิธีการใช้อินพุตและผลลัพธ์ผ่าน GUI
Awt and Swing
ก่อนหน้านี้ฉันเขียนโปรแกรม GUI ใน Java โดยใช้ชุดเครื่องมือ Abt Awt (Abstract Window Toolkit) ตอนนี้ฉันใช้การแกว่งบ่อยขึ้น การสวิงถือได้ว่าเป็น AWT รุ่นที่ได้รับการปรับปรุงแทนที่จะเปลี่ยน AWT และเป็นการปรับปรุงและขยาย AWT ดังนั้นเมื่อเขียนโปรแกรม GUI ทั้งการสวิงและ AWT จะต้องใช้ พวกเขาอยู่ร่วมกันใน Java Foundation Class (JFC)
แม้ว่าทั้ง AWT และ Swing จะมีคลาสที่สร้างองค์ประกอบอินเตอร์เฟสกราฟิก แต่แง่มุมที่สำคัญของพวกเขาแตกต่างกันไป: AWT อาศัยแพลตฟอร์มหลักในการวาดส่วนประกอบของผู้ใช้ . ความแตกต่างที่ชัดเจนที่สุดระหว่างการแกว่งและ AWT คือการปรากฏตัวของส่วนประกอบอินเตอร์เฟส อย่างไรก็ตามแอปพลิเคชันที่ใช้สวิงอาจมีรูปลักษณ์และสไตล์เดียวกันบนแพลตฟอร์มใด ๆ
คลาสในการแกว่งนั้นสืบทอดมาจาก AWT และคลาสสวิงบางคลาสจะขยายคลาสที่สอดคล้องกันโดยตรงใน AWT ตัวอย่างเช่น Japplet, Jdialog, JFrame และ JWindow
การใช้สวิงเพื่อออกแบบอินเทอร์เฟซกราฟิกมีการแนะนำแพ็คเกจหลักสองชุด:
เนื่องจากการแกว่งนั้นร่ำรวยเกินไปจึงเป็นไปไม่ได้ที่จะให้คำแนะนำที่ครอบคลุมเกี่ยวกับการแกว่งในตำราเรียน แต่ความรู้เกี่ยวกับการสวิงที่แนะนำในบทนี้เพียงพอที่จะอนุญาตให้ผู้อ่านเขียนโปรแกรม GUI ที่ยอดเยี่ยม
ส่วนประกอบและภาชนะบรรจุ
ส่วนประกอบเป็นองค์ประกอบพื้นฐานของอินเทอร์เฟซกราฟิกที่ผู้ใช้สามารถทำงานได้โดยตรงเช่นปุ่ม คอนเทนเนอร์เป็นองค์ประกอบคอมโพสิตของอินเทอร์เฟซกราฟิกและคอนเทนเนอร์อาจมีส่วนประกอบเช่นแผง
คลาส Java ที่กำหนดไว้ล่วงหน้าสำหรับแต่ละองค์ประกอบและโปรแกรมผ่านวัตถุส่วนประกอบต่าง ๆ ผ่านพวกเขาหรือคลาสย่อยของพวกเขา เป็นปุ่ม ภาษา Java ยังมีคลาสที่กำหนดไว้ล่วงหน้าสำหรับแต่ละคอนเทนเนอร์และโปรแกรมสร้างวัตถุคอนเทนเนอร์ต่าง ๆ ผ่านพวกเขาหรือคลาสย่อยของพวกเขา ตัวอย่างเช่นคลาสหน้าต่างที่กำหนดไว้ล่วงหน้า JFrame ในการแกว่งเป็นคลาสคอนเทนเนอร์และวัตถุของคลาสย่อย JFrame หรือ JFrame ที่สร้างโดยโปรแกรมคือหน้าต่าง
เพื่อจัดการส่วนประกอบและคอนเทนเนอร์ในลักษณะที่เป็นเอกภาพจะมีการกำหนดซูเปอร์คลาสสำหรับคลาสส่วนประกอบทั้งหมดและการดำเนินการทั่วไปของส่วนประกอบถูกกำหนดไว้ในคลาสส่วนประกอบ ในทำนองเดียวกันกำหนดคลาสคอนเทนเนอร์ superclass สำหรับคลาสคอนเทนเนอร์ทั้งหมดและกำหนดการดำเนินการที่ใช้ร่วมกันของคอนเทนเนอร์ในคลาสคอนเทนเนอร์ ตัวอย่างเช่นวิธีการเพิ่ม () ถูกกำหนดไว้ในคลาสคอนเทนเนอร์
คลาสคอมโพเนนต์คอนเทนเนอร์และกราฟิกเป็นคลาสคีย์ในไลบรารี AWT ในการสร้างอินเทอร์เฟซกราฟิกที่ซับซ้อนในระดับลำดับชั้นคอนเทนเนอร์จะได้รับการปฏิบัติเป็นส่วนประกอบพิเศษที่สามารถวางไว้ในภาชนะอื่น ตัวอย่างเช่นแยกปุ่มและกล่องข้อความหลายปุ่มในสองแผงแล้ววางแผงทั้งสองและปุ่มอื่น ๆ ลงในหน้าต่าง วิธีการสร้างอินเทอร์เฟซแบบลำดับชั้นนี้สามารถสร้างส่วนต่อประสานผู้ใช้ที่ซับซ้อนในรูปแบบที่เพิ่มขึ้น
พื้นฐานของการออกแบบไดรเวอร์เหตุการณ์
1. เหตุการณ์ตรวจสอบและตรวจสอบการลงทะเบียน <br /> เหตุการณ์ในอินเตอร์เฟสกราฟิกอ้างอิงถึงการดำเนินการของผู้ใช้ที่เกิดขึ้นบนส่วนประกอบ ตัวอย่างเช่นหากผู้ใช้คลิกปุ่มบนอินเทอร์เฟซนั่นหมายความว่าเหตุการณ์เกิดขึ้นบนปุ่มนี้และวัตถุปุ่มเป็นทริกเกอร์ของเหตุการณ์ วัตถุที่ตรวจสอบเหตุการณ์เรียกว่าจอภาพและจอภาพมีวิธีการจัดการเหตุการณ์ ในการเชื่อมโยงการตรวจสอบกับวัตถุเหตุการณ์จำเป็นต้องลงทะเบียนวัตถุเหตุการณ์เพื่อบอกระบบการตรวจสอบของวัตถุเหตุการณ์
การใช้โปรแกรมตอบสนองต่อเหตุการณ์ปุ่มเป็นตัวอย่างโปรแกรมต้องการสร้างวัตถุปุ่มเพิ่มลงในอินเทอร์เฟซลงทะเบียนปุ่มเป็นจอภาพและโปรแกรมจำเป็นต้องมีวิธีการตอบสนองต่อเหตุการณ์ปุ่ม เมื่อเหตุการณ์ "คลิกปุ่ม" เกิดขึ้นระบบจะเรียกใช้วิธีการประมวลผลเหตุการณ์ที่ลงทะเบียนสำหรับปุ่มนี้เพื่อให้การทำงานของการจัดการปุ่มเหตุการณ์
2. ตระหนักถึงภารกิจในการจัดการเหตุการณ์
มีโซลูชั่นหลักสองประการสำหรับการเขียนตัวจัดการกิจกรรมในภาษา Java: หนึ่งคือการรีเซ็ต HandleEvent (EventeVt) และโปรแกรมที่ใช้โซลูชันนี้เป็นเวิร์กโหลดมากขึ้นเล็กน้อย Java ให้หลายอินเทอร์เฟซตามประเภทเหตุการณ์ เมื่อมีเหตุการณ์เกิดขึ้นวิธีการในตัวของระบบในตัว (Event EVT) จะเรียกใช้วิธีการเพื่อตอบสนองต่อเหตุการณ์ที่ใช้โดยคลาสของจอภาพโดยอัตโนมัติ
แบบจำลองที่ใช้ในแพ็คเกจ java.awt.event เพื่อตรวจจับและตอบสนองต่อเหตุการณ์รวมถึงสามองค์ประกอบต่อไปนี้:
แหล่งที่มาของวัตถุ: บนส่วนประกอบของเหตุการณ์ "เกิดขึ้น" มันจะดูแลการติดต่อกับกลุ่มของวัตถุที่ "ฟัง" กับเหตุการณ์
ตรวจสอบวัตถุ: วัตถุของคลาสที่ใช้อินเทอร์เฟซที่กำหนดไว้ล่วงหน้า
วัตถุเหตุการณ์: มันมีข้อมูลที่อธิบายเหตุการณ์เฉพาะที่ส่งผ่านจากแหล่งที่มาไปยังจอภาพเมื่อเกิดเหตุการณ์
งานไดรเวอร์เหตุการณ์ต้องการทำนอกเหนือจากการสร้างวัตถุต้นทางและวัตถุตรวจสอบจะต้องจัดให้จอภาพเพื่อทำความเข้าใจวัตถุต้นทางหรือลงทะเบียนจอภาพด้วยวัตถุต้นทาง วัตถุต้นฉบับแต่ละรายการมีรายการจอภาพที่ลงทะเบียนซึ่งให้วิธีการเพิ่มวัตถุตรวจสอบในรายการ ระบบจะแจ้งวัตถุมอนิเตอร์ของเหตุการณ์ที่เกิดขึ้นบนวัตถุต้นทางหลังจากวัตถุต้นทางได้ลงทะเบียนจอภาพแล้ว
3. ประเภทเหตุการณ์และการตรวจสอบอินเทอร์เฟซ <br /> ในภาษา Java เพื่ออำนวยความสะดวกให้ระบบในการจัดการเหตุการณ์และเพื่ออำนวยความสะดวกในการลงทะเบียนจอภาพระบบจัดประเภทเหตุการณ์ซึ่งเรียกว่าประเภทเหตุการณ์ ระบบให้อินเทอร์เฟซสำหรับแต่ละประเภทเหตุการณ์ คลาสที่จะเป็นวัตถุตรวจสอบจะต้องใช้อินเทอร์เฟซที่เกี่ยวข้องและให้วิธีการตอบสนองต่อเหตุการณ์ที่ระบุโดยอินเทอร์เฟซ
การใช้เหตุการณ์ปุ่มตอบกลับโปรแกรมเป็นตัวอย่างปุ่มวัตถุคลาส JButton สามารถเป็นผู้ริเริ่มของเหตุการณ์ได้ เมื่อผู้ใช้คลิกปุ่มที่สอดคล้องกับปุ่มในอินเทอร์เฟซวัตถุปุ่มจะสร้างเหตุการณ์ประเภท ActionEvent หากวัตถุการตรวจสอบคือ OBJ และคลาส OBJ คือ OBJ ดังนั้นคลาส OBJ จะต้องใช้อินเตอร์เฟส ActionListener ใน AWT เพื่อใช้วิธีการ ActionPerformed ของเหตุการณ์การตรวจสอบ วัตถุปุ่มจะต้องลงทะเบียน OBJ มอนิเตอร์โดยใช้วิธี AddactionListener
เมื่อโปรแกรมทำงานอยู่เมื่อผู้ใช้คลิกปุ่มที่สอดคล้องกับวัตถุปุ่มระบบจะผ่านวัตถุ ActionEvent จากวัตถุไฟเหตุการณ์ไปยังจอภาพ วัตถุ ActionEvent มีข้อมูลรวมถึงปุ่มเหตุการณ์ที่เกิดขึ้นและข้อมูลอื่น ๆ เกี่ยวกับเหตุการณ์
ตารางต่อไปนี้แสดงประเภทเหตุการณ์ที่เป็นตัวแทนและส่วนประกอบสวิงบางส่วนที่สร้างเหตุการณ์เหล่านี้ เมื่อเหตุการณ์จริงเกิดขึ้นชุดของเหตุการณ์มักจะเกิดขึ้น เหตุการณ์ ActionEvent หมายความว่าเมาส์ได้รับการปล่อยตัวแล้ว แต่แอปพลิเคชันมักจะจัดการกับเหตุการณ์ ActionEvent เพียงครั้งเดียวของการกระทำเต็มรูปแบบของการกดปุ่ม
แต่ละประเภทเหตุการณ์มีอินเทอร์เฟซมอนิเตอร์ที่สอดคล้องกันและตารางที่ 11-2 แสดงรายการวิธีการสำหรับแต่ละอินเตอร์เฟส คลาสที่ใช้งานอินเตอร์เฟสการตรวจสอบจะต้องใช้วิธีการทั้งหมดที่กำหนดไว้ในส่วนต่อประสาน