[JTree] Hiển thị cấu trúc cây thư mục java | Directory Tree

Viết chương trình sử dụng JTree để hiển thị cây thư mục java.

Xem thêm:

1. Mô tả yêu cầu

Đề bài: Viết chương trình hiển thị cấu trúc thư mục giống một file explorer đơn giản sử dụng Java Swing.

Ứng dụng có các chức năng sau:

1. Mở file và hiển thị đường dẫn của file được mở lên giao diện.

2. Hiển thị cấu trúc thư mục dưới dạng cây (tree) từ đường dẫn được chọn.

Video hướng dẫn:

2. Class chọn thư mục hiển thị

private void btnOpenPathActionPerformed(java.awt.event.ActionEvent evt) {                                            
    JFileChooser filechooser = new JFileChooser();
    filechooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    
    int result = filechooser.showOpenDialog(this);
    if(result == JFileChooser.APPROVE_OPTION){
        String path = filechooser.getSelectedFile().getAbsolutePath();
        txtPath.setText(path);
        listFileAll(path);
    }
}

Chi tiết từng dòng code:

  • JFileChooser filechooser = new JFileChooser(): Tạo một đối tượng JFileChooser để mở hộp thoại chọn đường dẫn.
  • filechooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY): Thiết lập chế độ chỉ chọn thư mục, không chọn file.
  • int result = filechooser.showOpenDialog(this): Hiển thị hộp thoại chọn đường dẫn và gán kết quả trả về vào biến result.
  • if (result == JFileChooser.APPROVE_OPTION) : Kiểm tra xem người dùng đã chọn một thư mục hay không (nếu nhấn OK).
  • String path = filechooser.getSelectedFile().getAbsolutePath(): Lấy đường dẫn tuyệt đối của thư mục được chọn.
  • txtPath.setText(path): Hiển thị đường dẫn trong trường văn bản txtPath.
  • listFileAll(path): Gọi hàm listFileAll để hiển thị danh sách các tệp trong thư mục được chọn.

3. Liệt kê thư mục java

private void listFileAll(String path) {
    // Tạo một đối tượng File từ đường dẫn được chọn
    File myFile = new File(path);

    // Tạo nút gốc cho cây thư mục với tên của thư mục được chọn
    DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(myFile.getName());

    // Duyệt qua tất cả các tệp tin và thư mục trong thư mục được chọn
    for (File f : myFile.listFiles()) {
        // Tạo nút con cho mỗi tệp tin hoặc thư mục
        DefaultMutableTreeNode childNode = new DefaultMutableTreeNode(f.getName());

        // Thêm nút con vào nút gốc
        rootNode.add(childNode);

        // Nếu là thư mục, thêm các nút con bổ sung cho thư mục đó
        if (f.isDirectory()) {
            addSubNodes(childNode, f);
        }
    }

    // Tạo một mô hình cây mới với nút gốc và đặt nó cho JTree
    DefaultTreeModel defaultTreeModel = new DefaultTreeModel(rootNode);
    jTree.setModel(defaultTreeModel);
}

private void addSubNodes(DefaultMutableTreeNode parentNode, File parentFile) {
    // Duyệt qua tất cả các tệp tin và thư mục trong thư mục cha
    for (File f : parentFile.listFiles()) {
        // Tạo nút con cho mỗi tệp tin hoặc thư mục
        DefaultMutableTreeNode childNode = new DefaultMutableTreeNode(f.getName());

        // Thêm nút con vào nút cha
        parentNode.add(childNode);

        // Nếu là thư mục, đệ quy thêm các nút con bổ sung cho thư mục đó
        if (f.isDirectory()) {
            addSubNodes(childNode, f);
        }
    }
}

Trên đây là hướng dẫn sử dụng jtree để hiển thị cấu trúc thư mục máy tính. Cảm ơn bạn đã tham khảo bài tập lập trình hướng đối tượng Java trên ttnguyen.net.

Source code:

Bài viết liên quan:

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em