复选框工具7.23——递归方式遍历目录和子目录 返回到树

树:

用递归的方式遍历目录和子目录,控制了递归的次数,并将结果返回到树中;

完整代码:


import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.table.DefaultTableModel;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Highgo
 */



public class CheckboxSwing extends javax.swing.JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * Creates new form CheckboxSwing
	 * 
	 * @throws IOException
	 */
	public CheckboxSwing() throws IOException {
		this.setTitle("CheckboxSwing");
		initComponents();
		inittable();
		this.setLocationRelativeTo(null);

	}

	private CheckboxSwing getThis() {
		return this;
	}

	private void dathinit()  {
		jTabcheckbox.getModel();

		// String filedath = null;

		// String dath = "./config/Checkbox.config";
		// FileReader fr = new FileReader(dath);
		// BufferedReader br = new BufferedReader(fr);
		//
		// String lineText = null;
		// while ((lineText = br.readLine()) != null) {
		// System.out.println(lineText);
		// filedath = lineText;
		// }
		//
		// System.out.println(filedath);
		// br.close();

		// filedath = "D://CPUZ";
		String filedath = null;
		filedath = jTextArea1.getText();
		//jTextArea1.setText(filedath);
		//		if (filedath.equals("") == true) {
		//
		//		} 

		if (filedath == null || filedath.trim().equals("")) {

		} 
		else {
			//			File file = new File(filedath);
			//			File[] fileList = file.listFiles();
			//			for (int i = 0; i < fileList.length; i++) {
			//				if (fileList[i].isFile()) {
			//					String fileName = fileList[i].getName();
			//					System.out.println("fileName:  " + fileName);
			//					model.addRow(new Object[] { true, model.getRowCount() + 1 ,fileName });
			//
			//				}
			//
			//				if (fileList[i].isDirectory()) {
			//					String fileName = fileList[i].getName();
			//					System.out.println("DirectoryName:  " + fileName);
			//				}
			//			}
			
			//getFile(filedath,0,rootNode,DirectoryName); 
				
				traverseFolder(filedath,0);
				
		}

	}	
	private   DefaultMutableTreeNode traverseFolder(String path,int n) {
		DefaultMutableTreeNode temp;
		DefaultTableModel model = (DefaultTableModel) jTabcheckbox.getModel();
		DefaultMutableTreeNode fujiedian = new DefaultMutableTreeNode(new File(path).getName());
		File file = new File(path);
		if (file.exists()) {
			if(file.isDirectory()) {
				File[] files = file.listFiles();
				if (files.length == 0) {
					if(file.isDirectory()) {//如果是空文件夹
						DefaultMutableTreeNode dn = new DefaultMutableTreeNode(file.getName(), false);
						return dn;
					}
				}else{
					for (File file2 : files) {
						if (file2.isDirectory()) {
							//是目录的话,生成节点,并添加里面的节点
							if( n < 5) {
								n++;
								fujiedian.add(traverseFolder(file2.getAbsolutePath(),n));
							}
						}else{
							//是文件的话直接生成节点,并把该节点加到对应父节点上
							String fileName = file2.getName();
							model.addRow(new Object[] { true, model.getRowCount() + 1 ,fileName});
							temp=new DefaultMutableTreeNode(file2.getName());
							fujiedian.add(temp);
						}
						javax.swing.tree.DefaultTreeModel dm = new DefaultTreeModel(fujiedian);
						// 将模型设给树,树上显示的将上前面所加载的节点
						jTree.setModel(dm);
					}
				}
			} else {
				model.addRow(new Object[] { true, model.getRowCount() + 1 ,file.getName()});
			}
		} else {//文件不存在
			return null;
		}
		return fujiedian;

	}

	private  void getFile(String path,int n,DefaultMutableTreeNode rootNode,String DirectoryName) {
		
		File file = new File(path);
		File[] array = file.listFiles();
		DefaultMutableTreeNode teamNode = new DefaultMutableTreeNode();
		teamNode.setUserObject(DirectoryName);
		// 将组节点加到根节点上:
		rootNode.add(teamNode);
		DefaultTableModel model = (DefaultTableModel) jTabcheckbox.g
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值