Jtree atulizavel - Para listar os arquivos do PC

0 respostas
G

To tentando criar uma Jtree q lista os arquivos do PC, mas quero um botao para adicionar os arquivos novos e remover os arquivos q foram deletados do PC
to usando esse modelo q achei na net:
alguem tem algum artigo ou classe q pode me ajudar?

vlw!

===========================

import java.io.File;

import java.util.Iterator;

import java.util.Vector;

import javax.swing.event.TreeModelEvent;

import javax.swing.event.TreeModelListener;

import javax.swing.tree.TreeModel;

import javax.swing.tree.TreePath;

class FileSystemModel implements TreeModel {
private File root;

private Vector listeners = new Vector();

public FileSystemModel(File rootDirectory) {

root = rootDirectory;

}
public Object getRoot() {

return root;

}
public Object getChild(Object parent, int index) {

File directory = (File) parent;

String[] children = directory.list();

<a href="//System.out.println">//System.out.println</a>(“getChild->”+parent.toString()+"|"+index);

return new TreeFile(directory, children[index]);

}
public int getChildCount(Object parent) {

File file = (File) parent;

<a href="//System.out.println">//System.out.println</a>(“getChildCount->”+parent.toString());

if (file.isDirectory()) {

String[] fileList = file.list();

if (fileList != null)

return file.list().length;

}

return 0;

}
public boolean isLeaf(Object node) {

File file = (File) node;

return file.isFile();

}
public int getIndexOfChild(Object parent, Object child) {

File directory = (File) parent;

File file = (File) child;

String[] children = directory.list();

for (int i = 0; i < children.length; i++) {

if (file.getName().equals(children[i])) {

return i;

}

}

return -1;

}
public void valueForPathChanged(TreePath path, Object value) {

<a href="//System.out.println">//System.out.println</a>(“ValueforpathChanged:”+path.toString()+"|"+value.toString());

File oldFile = (File) path.getLastPathComponent();

String fileParentPath = oldFile.getParent();

String newFileName = (String) value;

File targetFile = new File(fileParentPath, newFileName);

oldFile.renameTo(targetFile);

File parent = new File(fileParentPath);

int[] changedChildrenIndices = { getIndexOfChild(parent, targetFile) };

Object[] changedChildren = { targetFile };

fireTreeNodesChanged(path.getParentPath(), changedChildrenIndices, changedChildren);

}
private void fireTreeNodesChanged(TreePath parentPath, int[] indices, Object[] children) {

<a href="//System.out.println">//System.out.println</a>(“firetreenodesChanged:”+parentPath.toString()+"|"+children.toString());

TreeModelEvent event = new TreeModelEvent(this, parentPath, indices, children);

Iterator iterator = listeners.iterator();

TreeModelListener listener = null;

while (iterator.hasNext()) {

listener = (TreeModelListener) iterator.next();

listener.treeNodesChanged(event);

}

}
public void addTreeModelListener(TreeModelListener listener) {

listeners.add(listener);

}
public void removeTreeModelListener(TreeModelListener listener) {

listeners.remove(listener);

}
private class TreeFile extends File {

public TreeFile(File parent, String child) {

super(parent, child);

}
public String toString() {
  return getName();
}

}
}

Criado 12 de março de 2009
Respostas 0
Participantes 1