Java SWT Tree ขยายทั้งหมด / ยุบทั้งหมด

ฉันจะทำให้ฟังก์ชันขยายทั้งหมดและยุบทั้งหมดสำหรับ SWT Tree ของฉันเองได้อย่างไร ซึ่งคล้ายกับปุ่มยุบทั้งหมดใน Package Explorer ของ Eclipse


person Andrei Statescu    schedule 04.11.2016    source แหล่งที่มา


คำตอบ (1)


หากคุณเพียงแค่ใช้ SWT Tree คุณต้องวนซ้ำรายการทั้งหมดในแผนผังและขยาย / ยุบแต่ละรายการ ตัวอย่างเช่น:

boolean expanded = true to expand, false to collapse

Tree tree = ... your tree

tree.setRedraw(false);  // Stop redraw until operation complete

TreeItem [] items = tree.getItems();

for (TreeItem item : items) {
   item.setExpanded(expanded);
}

tree.setRedraw(true);

หากคุณใช้ JFace TreeViewer ให้เรียกวิธีการดู collapseAll หรือ expandAll

person greg-449    schedule 04.11.2016
comment
หากคุณกำลังใช้ JFace TreeViewer โปรดทราบว่า มีจุดบกพร่องที่ทำให้เกิด ตัวชี้เมาส์จะกะพริบเมื่อขยายต้นไม้ใหญ่ วิธีแก้ปัญหาคือการเรียก expandAll() จาก runable ที่ส่งผ่านไปยัง BusyIndicator::showWhile() - person Rüdiger Herrmann; 04.11.2016
comment
ทำไมคุณต้องหยุด redrwaw จนกว่าการดำเนินการจะเสร็จสมบูรณ์? - person eliaspr; 10.08.2017
comment
@ Professor901 มันหยุดการขยายของแต่ละบุคคลที่ถูกแยกออกจากกัน ทำให้สิ่งต่าง ๆ ช้าลงและอาจทำให้เกิดการกะพริบ - person greg-449; 10.08.2017