DefaultMutableTreeNode trong JAVA SWING

DefaultMutableTreeNode trong gói javax.swing.tree cung cấp một loạt các tính năng để thao tác với cây dữ liệu có thể thay đổi. Dưới đây là một số tính năng chính của lớp DefaultMutableTreeNode:

  1. Quản lý cấu trúc cây:
    • Thêm nút con: add(DefaultMutableTreeNode child)
    • Xóa nút con: remove(DefaultMutableTreeNode child)
    • Xóa tất cả nút con: removeAllChildren()
    • Lấy số lượng nút con: getChildCount()
    • Lấy nút con tại vị trí cụ thể: getChildAt(int index)
    • Lấy vị trí của một nút con: getIndex(TreeNode node)
    • Kiểm tra xem một nút có phải là nút lá hay không: isLeaf()
  2. Truy xuất và sửa đổi nội dung nút:
    • Lấy đối tượng người dùng của nút: getUserObject()
    • Đặt đối tượng người dùng của nút: setUserObject(Object userObject)
  3. Quản lý nút cha:
    • Lấy nút cha: getParent()
    • Đặt nút cha: setParent(MutableTreeNode newParent)
  4. Kiểm tra và truy xuất các mối quan hệ giữa các nút:
    • Kiểm tra xem một nút có phải là nút cha của nút hiện tại hay không: isNodeChild(TreeNode aNode)
    • Kiểm tra xem một nút có phải là nút cha của nút khác hay không: isNodeDescendant(TreeNode anotherNode)
    • Lấy đường dẫn từ gốc đến nút hiện tại: getPath()
    • Lấy đường dẫn từ nút gốc đến một nút khác: getPathToRoot(TreeNode aNode)
  5. Traversing (Duyệt) cây:
    • Duyệt qua các nút con sử dụng vòng lặp: children()
    • Duyệt qua các nút con sử dụng vòng lặp duyệt sâu: depthFirstEnumeration()
    • Duyệt qua các nút con sử dụng vòng lặp duyệt rộng: breadthFirstEnumeration()
  6. Phương pháp toán tử so sánh:
    • So sánh nút hiện tại với một nút khác: compareTo(Object o)

Đây chỉ là một số tính năng chính của lớp DefaultMutableTreeNode. Có thể tổ chức, truy xuất và thay đổi cây dữ liệu một cách linh hoạt và hiệu quả bằng cách sử dụng các phương thức được cung cấp bởi lớp này.

Dưới đây là một ví dụ minh họa về cách sử dụng DefaultMutableTreeNode để tạo và thao tác với một cây dữ liệu:

import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;

public class TreeExample {
    public static void main(String[] args) {
        // Tạo nút gốc
        DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");

        // Tạo và thêm nút con
        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("Node 1");
        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("Node 2");
        DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("Node 3");
        root.add(node1);
        root.add(node2);
        root.add(node3);

        // Thêm nút con cho node1
        DefaultMutableTreeNode node11 = new DefaultMutableTreeNode("Node 1.1");
        DefaultMutableTreeNode node12 = new DefaultMutableTreeNode("Node 1.2");
        node1.add(node11);
        node1.add(node12);

        // Thêm nút con cho node2
        DefaultMutableTreeNode node21 = new DefaultMutableTreeNode("Node 2.1");
        DefaultMutableTreeNode node22 = new DefaultMutableTreeNode("Node 2.2");
        node2.add(node21);
        node2.add(node22);

        // Truy cập và in ra cây dữ liệu
        printTree(root);

        // Kiểm tra một nút có phải là nút lá hay không
        System.out.println("Is node11 a leaf? " + node11.isLeaf()); // false
        System.out.println("Is node21 a leaf? " + node21.isLeaf()); // true

        // Lấy đường dẫn từ gốc đến nút node12
        TreePath path = new TreePath(node12.getPath());
        System.out.println("Path to node12: " + path);

        // Lấy số lượng nút con của nút gốc
        System.out.println("Number of children of root: " + root.getChildCount()); // 3
    }

    // In ra cây dữ liệu bằng phương pháp duyệt sâu
    public static void printTree(DefaultMutableTreeNode node) {
        System.out.println(node.getUserObject());

        for (int i = 0; i < node.getChildCount(); i++) {
            TreeNode child = node.getChildAt(i);
            printTree((DefaultMutableTreeNode) child);
        }
    }
}

Kết quả sẽ là:

Root
Node 1
Node 1.1
Node 1.2
Node 2
Node 2.1
Node 2.2
Node 3
Is node11 a leaf? false
Is node21 a leaf? true
Path to node12: [Root, Node 1, Node 1.2]
Number of children of root: 3

Trong ví dụ này, chúng ta đã tạo một cây dữ liệu đơn giản bằng cách sử dụng DefaultMutableTreeNode và thực hiện một số thao tác như truy cập vào các nút, kiểm tra tính chất của nút và lấy đường dẫn trong cây dữ liệu.

Related Posts
Lịch sử ngôn ngữ lập trình Java

Java (phiên âm Tiếng Việt: "Gia-va") là một ngôn ngữ lập trình hướng đối tượng, dựa trên lớp được thiết Read more

Phím tắt trong Eclipse giúp tăng năng suất coding

Các phím tắt sẽ giúp tốc độ coding của bạn nhanh hơn rất nhiều, hơn nữa format code của bạn Read more

Lập trình Hướng đối tượng(OOP)

Lập trình hướng đối tượng (tiếng Anh: Object-oriented programming, viết tắt: OOP) là một mẫu hình lập trình dựa trên Read more

Kiểu dữ liệu Nguyên thủy(Primitive)

1. Tổng quan Trong ngôn ngữ lập trình Java có 2 kiểu dữ liệu chúng ta cần nắm và phân Read more

Hãy bình luận đầu tiên

Để lại một phản hồi