树:
用递归的方式遍历目录和子目录,控制了递归的次数,并将结果返回到树中;
完整代码:
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