Exception in thread "main" java.lang.NullPointerException
at MyJFrame.addTreeNode(MySelfJTree.java:39)
at MyJFrame.addTreeNode(MySelfJTree.java:43)
at MyJFrame.<init>(MySelfJTree.java:29)
at MySelfJTree.main(MySelfJTree.java:13)上面Exception如何解决,源码如下:import java.awt.BorderLayout;
import java.io.File;import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
public class MySelfJTree {
     public static void main(String[]args){
      MyJFrame frame=new MyJFrame();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
     }
}class MyJFrame extends JFrame{
public MyJFrame(){
setTitle("mytree");
setSize(900,500);
DefaultMutableTreeNode root=new DefaultMutableTreeNode("Rong");
File[]files=File.listRoots();
for(int i=0;i<files.length;i++){
DefaultMutableTreeNode disk=new DefaultMutableTreeNode(files[i].getName().toString());
root.add(disk);
if(files[i].isDirectory()){
addTreeNode(disk,files[i]);
}

}
DefaultTreeModel treeModel=new DefaultTreeModel(root);
JTree mytree=new JTree(treeModel);
add(new JScrollPane(mytree),BorderLayout.WEST);
}
public void addTreeNode(DefaultMutableTreeNode treeNode,File file){
File[]files=file.listFiles();
for(File fil:file.listFiles()){
if(fil.isDirectory()||fil.getName().toString().toLowerCase().matches(".+\\.(jpg|gif|jpeg|bmp|png)")){
DefaultMutableTreeNode childNode=new DefaultMutableTreeNode(fil.getName());
treeNode.add(childNode);
                                addTreeNode(childNode,fil); }
}
}
}

解决方案 »

  1.   

    碰到".jpg|gif|jpeg|bmp|png"z 这样的图形文件时,递归调用addTreeNode(childNode,fil)方法,这时执行语句:File[]files=file.listFiles();
    files返回null.
    再执行
    for(File fil:file.listFiles())
    就报那串错误,(空指针异常).如果检测这种情况,跳过的话,就不出现了.  (或许有违楼主的意愿,仅仅供参考.)public void addTreeNode(DefaultMutableTreeNode treeNode,File file){
    File[]files=file.listFiles();
    if(files!=null)     //加一检测.
    {for(File fil:file.listFiles()){
    if(fil.isDirectory()||fil.getName().toString().toLowerCase().matches(".+\\.(jpg|gif|jpeg|bmp|png)")){
    DefaultMutableTreeNode childNode=new DefaultMutableTreeNode(fil.getName());
    treeNode.add(childNode);
      addTreeNode(childNode,fil);}
    }
    }   //end if(files!=null)
    }