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

วิธีปิดใช้งาน Leaf Node ใน JTree ด้วย Java


JTree เป็นคอมโพเนนต์ที่แสดงมุมมอง ลำดับชั้น (hierarchical) ของข้อมูล ผู้ใช้สามารถ ขยาย (expand) หรือ ยุบ (collapse) โหนดย่อยได้ TreeNode กำหนดเมธอดที่ต้องใช้สำหรับโหนดของ JTree คลาส DefaultMutableTreeNode ให้การใช้งานเริ่มต้นของ TreeNode เราสามารถปิดใช้งาน leaf ของ JTree ได้โดยการ override เมธอด getTreeCellRendererComponent() ของคลาส DefaultTreeCellRenderer

ไวยากรณ์

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 Node ใน JTree ด้วย Java