package exercise;import java.io.File;import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;public class Jtree extends JFrame
{
private JScrollPane jsp;
private JTree jtr;
private static DefaultMutableTreeNode root;
public Jtree()
{
init();
setBounds(50, 50, 500, 800);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
File file=new File("d:\\homework");
root=new DefaultMutableTreeNode(file);
search(file, root);
} public void init()
{
jtr=new JTree(root);
jsp=new JScrollPane(jtr);
add(jsp);
}
public static void search(File file,DefaultMutableTreeNode node)
{
File[] f=file.listFiles();
for(int i=0;i<f.length;i++)
{
DefaultMutableTreeNode nodes=new DefaultMutableTreeNode(f[i].getName());
node.add(nodes);
if(f[i].isDirectory())
{
search(f[i],nodes);
}
}
} public static void main(String[] args)
{
new Jtree().setVisible(true);
}}
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;public class Jtree extends JFrame
{
private JScrollPane jsp;
private JTree jtr;
private static DefaultMutableTreeNode root;
public Jtree()
{
init();
setBounds(50, 50, 500, 800);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
File file=new File("d:\\homework");
root=new DefaultMutableTreeNode(file);
search(file, root);
} public void init()
{
jtr=new JTree(root);
jsp=new JScrollPane(jtr);
add(jsp);
}
public static void search(File file,DefaultMutableTreeNode node)
{
File[] f=file.listFiles();
for(int i=0;i<f.length;i++)
{
DefaultMutableTreeNode nodes=new DefaultMutableTreeNode(f[i].getName());
node.add(nodes);
if(f[i].isDirectory())
{
search(f[i],nodes);
}
}
} public static void main(String[] args)
{
new Jtree().setVisible(true);
}}
package exercise;import java.io.File;import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;public class Jtree extends JFrame
{
private JScrollPane jsp;
private JTree jtr;
private static DefaultMutableTreeNode root;
public Jtree()
{
setBounds(50, 50, 500, 800);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
File file=new File("d:\\1");
root=new DefaultMutableTreeNode(file);
search(file, root);
init(); //最后创建JTree
}
public void init()
{
jtr=new JTree(root);
jsp=new JScrollPane(jtr);
add(jsp);
}
public static void search(File file,DefaultMutableTreeNode node)
{
File[] f=file.listFiles();
for(int i=0;i<f.length;i++)
{
DefaultMutableTreeNode nodes=new DefaultMutableTreeNode(f[i].getName());
node.add(nodes);
if(f[i].isDirectory())
{
search(f[i],nodes);
}
}
}
public static void main(String[] args)
{
new Jtree().setVisible(true);
}}
swing程序貌似是不能调试的,至少我目前还不知道有效的调试方法你的程序的原因是,如果你先init,那么你JTree显示的root和你实际的root不一样,因为你用root=new DefaultMutableTreeNode(file);改写了它的值
我真正是想打印的是D盘下的所有文件 不是某个文件夹 一改成D:\\就出错啊
jtr=new JTree(root);需要你root,开始root = null,看不到树
要等到root先赋值,在运行 jtr = new JTree(root);
import java.io.File;import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;public class Jtree extends JFrame {
private JScrollPane jsp;
private JTree jtr;
private static DefaultMutableTreeNode root; public Jtree() {
setBounds(50, 50, 500, 800);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
File file = new File("D:\\");
File[] fs = file.listFiles();
System.out.println(fs.length);
root = new DefaultMutableTreeNode(file);
init();
search(file, root);
this.setVisible(true);
} public void init() {
jtr = new JTree(root);
jsp = new JScrollPane(jtr);
add(jtr);
} public static void search(File file, DefaultMutableTreeNode node) {
File[] f = file.listFiles();
for (int i = 0; i < f.length; i++){
DefaultMutableTreeNode nodes = new DefaultMutableTreeNode(
f[i].getName());
node.add(nodes);
if (f[i].isDirectory()) {
search(f[i], nodes);
}
else{//just here。加上这个没问题。。
return;
}
}
}
public static void main(String args[]){
new Jtree();
}
}
public static void search(File file, DefaultMutableTreeNode node) {
File[] f = file.listFiles();
if(f==null){
return;
}
for (int i = 0; i < f.length; i++){
DefaultMutableTreeNode nodes = new DefaultMutableTreeNode(
f[i].getName());
node.add(nodes);
if (f[i].isDirectory()) {
search(f[i], nodes);
}
}
return;
}
以前我也遇到过这个问题,我觉得主要是文件太多了,程序不可能一下子遍历完如果你要实现类似资源管理器的效果的话,最好一次只遍历当前目录下的文件,其它文件在你双击文件夹的时候通过TreeModelListener来显示
package exercise;import java.io.File;import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;public class Jtree extends JFrame
{
private JScrollPane jsp;
private JTree jtr;
private static DefaultMutableTreeNode root;
public Jtree()
{
setBounds(50, 50, 500, 800);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
File file=new File("d:\\");
root=new DefaultMutableTreeNode(file);
search(file, root);
init();
} public void init()
{
jtr=new JTree(root);
jsp=new JScrollPane(jtr);
add(jsp);
}
public static void search(File file,DefaultMutableTreeNode node)
{
File[] f=file.listFiles();
for(int i=0;i<f.length;i++)
{
if(f[i].isHidden())continue;
DefaultMutableTreeNode nodes=new DefaultMutableTreeNode(f[i].getName());
node.add(nodes);
if(f[i].isDirectory())
{
search(f[i],nodes);
}
// else
// {
// return;
// }
}
} public static void main(String[] args)
{
new Jtree().setVisible(true);
}}