กล่องรายการถูกสร้างขึ้นโดยองค์ประกอบสวิง Jlist ซึ่งมักจะมีจำนวนแถวคงที่บนหน้าจอเสมอ หากคุณต้องการได้รับองค์ประกอบที่เลือกในกล่องรายการเพียงโทร GetSelectedValuesList () ซึ่งสามารถสร้างอาร์เรย์ของสตริงด้วยชื่อองค์ประกอบที่เลือก ส่วนประกอบ JLIST อนุญาตให้เลือกได้หลายตัว หากคุณกดปุ่ม CTRL ไว้คุณสามารถเลือกองค์ประกอบที่คลิกทั้งหมดได้ หากคุณเลือกองค์ประกอบให้กดปุ่ม Shift ค้างไว้และคลิกองค์ประกอบอื่นแล้วองค์ประกอบทั้งหมดระหว่างองค์ประกอบทั้งสองจะถูกเลือก หากต้องการลบหนึ่งออกจากองค์ประกอบที่เลือกให้กดปุ่ม CTRL ค้างไว้และคลิกองค์ประกอบ
หลังจากเริ่มต้นกล่องรายการแล้วเพิ่มและแก้ไขเนื้อหาไปยังกล่องรายการ มันถูกแบ่งออกเป็นการดำเนินการแบบคงที่และการดำเนินการแบบไดนามิก
1. การทำงานแบบคงที่
การทำงานแบบคงที่หมายถึงการเพิ่มองค์ประกอบทั้งหมดใน JLIST ในเวลาเดียวกัน หลังจากเพิ่มแล้วจะไม่สามารถแก้ไขหรือลบได้ นั่นคือกล่องรายการไม่สามารถใช้งานได้ในระหว่างการดำเนินการโปรแกรม
เช่น
การทดสอบแพ็คเกจ; นำเข้า Javax.swing.*; นำเข้า Java.awt.*; นำเข้า net.mindview.util.swingconsole.*; คลาสสาธารณะ ListTest1 ขยาย jframe {สตริงส่วนตัว [] str = {"วันจันทร์", "วันอังคาร", "วันพุธ", "วันพฤหัสบดี", "วันศุกร์" jlist (str); setlayout (ใหม่ flowlayout ()); เพิ่ม (รายการ);} โมฆะคงที่สาธารณะหลัก (สตริง [] args) {เรียกใช้ (ใหม่ listest1 (), 200,100);}}}ดังในตัวอย่างข้างต้นเพียงเพิ่มองค์ประกอบทั้งหมดเมื่อเริ่มต้น JLIST
ผลการดำเนินการ: กล่องรายการไม่สามารถใช้งานได้
2. การทำงานแบบไดนามิก
โดยการดูวิธี JLIST คุณจะพบว่า JLIST จะไม่รับผิดชอบต่อการทำงานแบบไดนามิกของกล่องรายการ รายละเอียดทั้งหมดของการดำเนินการแบบไดนามิกสามารถทำได้ใน "โมเดลรายการ" คือ DefaultListModel เพียงเพิ่มโมเดลรายการลงใน JLIST
DefaultListModel ListModel = ใหม่ defaultListModel (); listmodel.addelement (Element1); // เพิ่มองค์ประกอบ listmodel.clear (); // ล้างองค์ประกอบทั้งหมด listmodel.remove (ดัชนี int); // ล้างองค์ประกอบที่ตำแหน่งที่กำหนด
เช่น
การทดสอบแพ็คเกจ; นำเข้า java.awt.*; นำเข้า java.awt.event.*; นำเข้า net.mindview.util.swingconsole.*; นำเข้า Javax.swing.border.border; นำเข้า Javax.swing.event.listeselection {"วันจันทร์", "วันอังคาร", "วันพุธ", "วันพฤหัสบดี", "วันศุกร์", "staturday", "วันอาทิตย์"}; jbutton ส่วนตัว button1 = ใหม่ jbutton ("เพิ่มรายการ"), button2 = new jbutton ("รายการที่ชัดเจน") JLIST ใหม่ (ListModel); // เพิ่มโมเดลรายการลงใน JLIST โมเดลรายการมีหน้าที่รับผิดชอบในการดำเนินการแบบไดนามิกและ JLIST มีหน้าที่รับผิดชอบในการสร้างรายการและงานอื่น ๆ อีกมากมาย (เช่นการเลือกหลายรายการ) ส่วนตัว int count = 0; ธงบูลีนส่วนตัว = false; public listTest () {text.setEditable (เท็จ); // มันถูกใช้เพื่อแสดงเท่านั้นและไม่สามารถแก้ไขได้สำหรับ (int i = 0; i <4; i ++) {listModel.addelement (str [count ++]; e) {if (count <str.length) {listmodel.addelement (str [count ++]);} else {button1.setenabled (Flag); Flag = true;}}}); button2.addactionListener listmodel.clear (); // คลิกรายการองค์ประกอบรายการ text.settext (null);} else {count = 0; listmodel.clear (); text.settext (null); button1.setenabled (Flag); // เริ่มต้น}}}); list.addlistelectionlistener ValueChanged (listselectionEvent e) {ถ้า (e.getValueIsadjusting ()) ผลตอบแทน; // หากตรวจพบเหตุการณ์ที่จะเปลี่ยนแปลงมันจะส่งคืนจริงและคำสั่งที่ตามมาจะไม่ถูกดำเนินการ; สำหรับ (รายการวัตถุ: list.getSelectedValuesList ()) {text.Append (รายการ + "/n"); // แปลงรายการรายการเป็นวัตถุ} // รายการเรียกวิธี getSelectedValuesList () เพื่อสร้างสายไฟที่เลือก 1 color.red); // เพิ่ม border list.setBorder (เส้นขอบ); // ตั้งค่า border text.setBorder (เส้นขอบ); เพิ่ม (button1); เพิ่ม (button2); เพิ่ม (jscrollpane ใหม่ (ข้อความ)); เพิ่ม (รายการ);} โมฆะคงที่สาธารณะผลการดำเนินการ:
ในโปรแกรมข้างต้นวิธีการ getValueIsadjusting () ของเหตุการณ์ listselectionEvent ที่ได้รับการสนับสนุนโดย JLIST และวิธีการ getSelectedValuesList () ของ JLIST ใช้ในกระบวนการประมวลผลของ JLIST ให้ความสนใจกับการใช้วิธีทั้งสองนี้
(1) บูลีน javax.swing.event.listselectionEvent.getValueisadjusting ()
ส่งคืนว่าเหตุการณ์นี้เป็นหนึ่งในหลายเหตุการณ์ที่แตกต่างกันที่ยังคงเปลี่ยนแปลงและส่งคืนจริงหรือไม่ถ้าเหตุการณ์นี้เป็นหนึ่งในหลายเหตุการณ์ที่แตกต่างกันที่ยังคงเปลี่ยนแปลง
ตัวอย่างเช่นสำหรับเหตุการณ์ที่เลือกที่จะอัปเดตเพื่อตอบสนองต่อการลากของผู้ใช้คุณสมบัตินี้ถูกตั้งค่าเป็น TRUE เมื่อเริ่มต้นการลาก และถูกตั้งค่าเป็นเท็จเมื่อสิ้นสุดการลาก ในระหว่างการลากผู้ฟังจะได้รับเหตุการณ์ที่คุณสมบัติ ValueIsadjusting ถูกตั้งค่าเป็น TRUE ในตอนท้ายของการลากเมื่อการเปลี่ยนแปลงสิ้นสุดลงผู้ฟังจะได้รับเหตุการณ์ที่มีค่าตั้งค่าเป็นเท็จ
หากคุณลบคำสั่งการตรวจจับการอัปเดตออกจากโปรแกรมการลงทะเบียนของวัตถุ JLIST:
ถ้า (e.getValueisadjusting ()) กลับ;
ผลลัพธ์คือ:
จะเห็นได้ว่าไม่มีการตรวจจับการอัปเดตและหลังจากเลือกองค์ประกอบกล่องรายการแล้วจะมีเอาต์พุตซ้ำ
(2) รายการ Javax.swing.jlist.getSelectedValuesList ()
วัตถุ JLIST เรียกวิธี getSelectedValuesList () เพื่อสร้างอาร์เรย์ของสตริงด้วยชื่อองค์ประกอบที่เลือก
3. JLIST SCROLLBAR
JList ไม่ได้ให้การสนับสนุนโดยตรงสำหรับการเลื่อนเราเพียงแค่ห่อ Jlist ลงใน JScrollpane มันจะช่วยรายละเอียดทั้งหมดโดยอัตโนมัติ
สรุป: หากคุณต้องการเพิ่มองค์ประกอบให้กับ JLIST คุณสามารถดำเนินการคงที่ที่เพิ่มองค์ประกอบทั้งหมดเมื่อ JLIST เริ่มต้นหรือคุณสามารถใช้ "โมเดล" แบบจำลอง "defaultListModel เพื่อประมวลผลการดำเนินการแบบไดนามิกของรายละเอียดการปรับเปลี่ยนรายการทั้งหมด
หมายเหตุ: การตรวจจับอัปเดตอาจใช้ในระหว่างการเลือกองค์ประกอบ JLIST เพื่อให้แน่ใจว่าเสถียรภาพของโปรแกรม
ด้านบนเป็นกล่องรายการของอินเทอร์เฟซผู้ใช้กราฟิก Java ที่แนะนำโดยตัวแก้ไข ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!