กล่องโต้ตอบเป็นเครื่องมือที่ให้โหมดการโต้ตอบสำหรับกระบวนการสนทนาของมนุษย์กับคอมพิวเตอร์ แอปพลิเคชันให้ข้อมูลแก่ผู้ใช้ผ่านกล่องโต้ตอบหรือรับข้อมูลจากผู้ใช้ กล่องโต้ตอบเป็นหน้าต่างชั่วคราวที่คุณสามารถวางควบคุมเพื่อรับอินพุตของผู้ใช้ ในการแกว่งมีคลาสโต้ตอบสองคลาสซึ่งเป็นคลาส JDialog และคลาส Joptionpane คลาส JDialog ให้การก่อสร้างและการจัดการกล่องโต้ตอบทั่วไป
คลาส JDialog
คลาส JDialog ทำหน้าที่เป็นคลาสพื้นฐานสำหรับกล่องโต้ตอบ กล่องโต้ตอบแตกต่างจากหน้าต่างทั่วไป
กล่องโต้ตอบแบ่งออกเป็นข้อบังคับและไม่บังคับ กล่องโต้ตอบบังคับไม่สามารถขัดจังหวะกระบวนการสนทนาจนกว่ากล่องโต้ตอบจะเสร็จสิ้นและโปรแกรมจะไม่ตอบสนองต่อเหตุการณ์นอกกล่องโต้ตอบ กล่องโต้ตอบที่ไม่ใช่การจัดการสามารถขัดจังหวะกระบวนการสนทนาและตอบสนองต่อเหตุการณ์นอกกล่องโต้ตอบ ประเภทที่ถูกบังคับใช้เรียกอีกอย่างว่ากล่องโต้ตอบโหมดและกล่องโต้ตอบที่ไม่บังคับใช้เรียกว่ากล่องโต้ตอบที่ไม่ใช่โหมด
วัตถุ JDialog ยังเป็นคอนเทนเนอร์ดังนั้นคุณยังสามารถกำหนดตัวจัดการเค้าโครงให้กับกล่องโต้ตอบ JDialog อย่างไรก็ตามส่วนประกอบไม่สามารถเพิ่มลงในกล่องโต้ตอบได้โดยตรง เนื่องจากกล่องโต้ตอบขึ้นอยู่กับหน้าต่างเพื่อสร้างกล่องโต้ตอบคุณต้องสร้างหน้าต่างก่อน
มี 3 ตัวสร้างที่ใช้กันทั่วไปสำหรับคลาส JDialog:
มีวิธีการทั่วไปอื่น ๆ อีกมากมายของคลาส JDialog:
[ตัวอย่าง] แอปเพล็ตประกาศคลาสหน้าต่างผู้ใช้และคลาสกล่องโต้ตอบ ป้อนข้อมูลที่เกี่ยวข้องในกล่องโต้ตอบแล้วกดปุ่ม OK ในกล่องโต้ตอบ กำหนดวิธีการตรวจสอบของปุ่มถ่ายโอนข้อมูลที่ป้อนในกล่องโต้ตอบไปยังหน้าต่างผู้ใช้และแสดงข้อมูลการเลือกในกล่องข้อความที่สอดคล้องกันของหน้าต่างผู้ใช้
นำเข้า java.applet.*นำเข้า Javax.swing.*; นำเข้า Java.awt.*; นำเข้า Java.awt.event.*; Class MyWindow ขยาย JFrame ดำเนินการ actionListener Text -text2, mywindow (String s) {super (s); (100,100); = ใหม่ Jtextfield (20); โมฆะคงที่ retur nname (สตริง s) {ถ้า (flg == 1) text1.settext ("ผลไม้ที่เลือกคือ:"+s); +s); 1; ชื่อ Jlabel; ชื่อ "); text = new jtextfield (10); text.setEditable (จริง); con.setLayout (ใหม่ flowlayout ()); con.setsize (200,100); setModal (เท็จ); เสร็จสิ้น = new JButton (" ตกลง ")) Done.addactionListener (นี้); ;ตัวอย่างด้านบนสร้างกล่องโต้ตอบบังคับ ด้วยวิธีนี้คุณสามารถเห็นผลกระทบของบทสนทนาบางอย่างในอินเทอร์เฟซ
เปลี่ยนตัวอย่างข้างต้นเป็นกล่องโต้ตอบที่ไม่ใช่การดูแลด้วยการเปลี่ยนแปลงเพียงเล็กน้อย ก่อนอื่นให้เปลี่ยนรหัส "super (f, s, true)" ในวิธีการก่อสร้างกล่องโต้ตอบเป็น "super (f, s, false);"
การเปลี่ยนแปลงครั้งที่สอง: ปรากฎว่าเมธอด returnName () จะถูกเรียกเมื่อตอบกลับเหตุการณ์ปุ่มยืนยันและสตริงที่ได้จากกล่องโต้ตอบจะถูกส่งกลับไปยังโปรแกรม ตอนนี้เมื่อสตริงการเลือกอินพุตกล่องข้อความสิ้นสุดวิธีการควรเรียกทันที ในการทำเช่นนี้คุณต้องตรวจสอบเหตุการณ์อินพุตในกล่องข้อความและลงทะเบียนจอภาพสำหรับข้อความ:
โมฆะสาธารณะ ActionPerformed (ActionEvent E) {ถ้า (e.getSource () == ข้อความ) {myWindow.ReturnName (text.get.getText ()); ข้อความ. getText ());คลาส Joptionpane
มันมักจะพบสถานการณ์การสนทนาที่ง่ายมาก คลาส JoptionPane มีชุดของวิธีการคงที่เพื่อให้ผู้ใช้สามารถเลือกกล่องโต้ตอบบางประเภท รหัสต่อไปนี้คือกล่องโต้ตอบทำเครื่องหมาย:
int result = joptionpane.showconfirmdialog (ผู้ปกครอง, "คุณต้องการออกจริงหรือไม่", "ออกยืนยัน", joptionpane.yes_no_cancel_option);
ข้อความ "ยืนยัน" ในส่วนตรงกลางของชื่อวิธีคือประเภทของการสร้างกล่องโต้ตอบและข้อความยืนยันข้อความระบุว่ากล่องโต้ตอบยืนยันถูกเลือก เปลี่ยนข้อความยืนยันเป็นหนึ่งในสามประเภทอื่น ๆ และกลายเป็นกล่องโต้ตอบประเภทที่สอดคล้องกัน ความหมายของพารามิเตอร์ทั้งสี่ของรหัสด้านบนคือ: พารามิเตอร์แรกระบุหน้าต่างหลักของกล่องโต้ตอบนี้ ระบุว่ากล่องโต้ตอบมีสามปุ่มคือ "ใช่ (y)," ไม่ (n) และ "เลิกทำ" ผลการส่งคืนของวิธีการเป็นผลลัพธ์ของผู้ใช้ที่ตอบสนองต่อกล่องโต้ตอบนี้ดูคำตอบที่เป็นไปได้ที่กำหนดในตารางที่ 11-5
กล่องโต้ตอบอินพุตขอให้ผู้ใช้ป้อนข้อมูลการเลือกในรูปแบบของรายการหรือกล่องข้อความ นี่คือรหัสแผนผังสำหรับกล่องโต้ตอบอินพุตที่เลือกโครงการรันจากรายการ:
String result = (String) JOptionPane.ShowInputDialog (Parent, "โปรดเลือกกีฬา", "นี่คือกล่องโต้ตอบการเลือกกีฬา", joptionpane.question_message, null, วัตถุใหม่ [] {"เล่นฟุตบอล", "เล่นบาสเก็ตบอล", " วิ่ง”,“ กระโดดเชือก”},“ วิ่ง”); พารามิเตอร์ที่สี่คือประเภทข้อมูลพารามิเตอร์ที่ห้าไม่มีเอฟเฟกต์พิเศษที่นี่และเป็นโมฆะเสมอ กล่องโต้ตอบยังมีปุ่ม OK และ UNDO
ประเภทกล่องโต้ตอบ JoptionPane
ผลลัพธ์ที่ส่งคืนโดยกล่องโต้ตอบ JoptionPane
ตัวเลือกประเภทข้อมูลสำหรับกล่องโต้ตอบ JoptionPane
บางครั้งโปรแกรมเพียงส่งออกข้อมูลบางอย่างและไม่ต้องการให้ผู้ใช้มีข้อเสนอแนะ กล่องโต้ตอบดังกล่าวสามารถสร้างได้ด้วยรหัสรูปแบบต่อไปนี้:
joptionpane.showmessagedialog (ผู้ปกครอง, "นี่คือโปรแกรม Java", "ฉันเป็นกล่องโต้ตอบข้อมูลเอาท์พุท", joptionpane.plain_message);
ความหมายของพารามิเตอร์สามตัวแรกในรหัสข้างต้นนั้นเหมือนกับที่อธิบายไว้ข้างต้นและพารามิเตอร์สุดท้ายคือประเภทข้อมูลถูกระบุว่าไม่รวมไอคอนใด ๆ