Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

เราจะปิดการใช้งาน leaf ของ JTree ใน Java ได้อย่างไร?


A JTree เป็นองค์ประกอบที่นำเสนอ ลำดับชั้น มุมมองของข้อมูล ผู้ใช้มีความสามารถในการ ขยาย หรือ ยุบ ต้นไม้ย่อยแต่ละต้น TreeNode อินเทอร์เฟซกำหนดวิธีการที่ต้องใช้โหนดของ JTree วัตถุ. DefaulMutableTreeNode คลาสจัดเตรียมการใช้งานเริ่มต้นของ TreeNode อินเตอร์เฟซ. เราสามารถปิดการใช้งาน Leaf ของ JTree ได้โดยการแทนที่ getTreeCellRendererComponent() วิธีการของ D ค่าเริ่มต้นTreeCellRenderer ชั้นเรียน

ไวยากรณ์

public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus)

ตัวอย่าง

import java.awt.*;
import javax.swing.tree.*;
import javax.swing.*;
public class JTreeLeafNodeDisableTest extends JFrame {
   private TreeNode treeNode;
   private JTree tree;
   public JTreeLeafNodeDisableTest() {
      setTitle("JTreeLeafNodeDisable Test");
      treeNode = new DefaultMutableTreeNode("Country");
      tree = new JTree();
      tree.setModel(new DefaultTreeModel(treeNode));
      tree.setCellRenderer(new CustomDefaultTreeCellRenderer());
      add(tree);
      setSize(400, 300);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setLocationRelativeTo(null);
      setVisible(true);
   }
   public static void main(String[] args) {
      new JTreeLeafNodeDisableTest();
   }
   static class CustomDefaultTreeCellRenderer extends DefaultTreeCellRenderer {
      @Override
      public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
         boolean enabled = false;
         sel = enabled;
         hasFocus = enabled;
         Component treeCellRendererComponent = super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
         treeCellRendererComponent.setEnabled(enabled);
         return treeCellRendererComponent;
      }
   }
}

ผลลัพธ์

เราจะปิดการใช้งาน leaf ของ JTree ใน Java ได้อย่างไร?