http://expert.csdn.net/Expert/TopicView1.asp?id=1546015

解决方案 »

  1.   

    JFileChooser其实也可以改造为资源管理器
      

  2.   

    那个程序只能显示某个盘的文件目录树,要想显示所有分区的文件系统怎么办?
    linux的文件系统如何显示?
      

  3.   

    在下面的程序的基础上加一个调用函数就可以了import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import com.borland.jbcl.layout.*;
    import java.io.*;
    import javax.swing.tree.*;
    import javax.swing.event.*;/**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2003</p>
     * <p>Company: </p>
     * @author unascribed
     * @version 1.0
     */public class BrowerFrame extends JFrame {
      private JPanel contentPane;
      private XYLayout xYLayout1 = new XYLayout();
      private JScrollPane jScrollPane1 = new JScrollPane();
      private JList jList1 = new JList();
      private JLabel jLabel1 = new JLabel();
      private JLabel jLabel2 = new JLabel();  File file;
      DefaultMutableTreeNode top=new DefaultMutableTreeNode("我的电脑");
        private JTree jTree1 = new JTree(top);
      //Construct the frame
      public BrowerFrame() {
        enableEvents(AWTEvent.WINDOW_EVENT_MASK);
        try {
          jbInit();
        }
        catch(Exception e) {
          e.printStackTrace();
        }
      }
      //Component initialization
      private void jbInit() throws Exception  {
        //setIconImage(Toolkit.getDefaultToolkit().createImage(BrowerFrame.class.getResource("[Your Icon]")));
        contentPane = (JPanel) this.getContentPane();
        contentPane.setLayout(xYLayout1);
        this.setSize(new Dimension(454, 351));
        this.setTitle("资源管理器");
        jLabel1.setFont(new java.awt.Font("Dialog", 1, 18));
        jLabel1.setText("资源管理器");
        jLabel2.setFont(new java.awt.Font("Dialog", 1, 18));
        jLabel2.setText("属性");
        jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        jScrollPane1.setViewportBorder(BorderFactory.createLoweredBevelBorder());
        jScrollPane1.setAutoscrolls(true);
        jTree1.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
          public void valueChanged(TreeSelectionEvent e) {
            jTree1_valueChanged(e);
          }
        });
        contentPane.add(jLabel1,  new XYConstraints(20, 14, 118, 29));
        contentPane.add(jLabel2,        new XYConstraints(238, 14, 118, 29));
        contentPane.add(jList1,           new XYConstraints(238, 55, 198, 254));
        contentPane.add(jScrollPane1, new XYConstraints(31, 59, 198, 254));
        jScrollPane1.getViewport().add(jTree1, null);
        this.createTree();
      }
       public void createTree(){
         DefaultMutableTreeNode node=null;
         File files[];
         files=file.listRoots();
         for(int i=0;i<files.length;i++){
           node=new DefaultMutableTreeNode(files[i].getPath());
           top.add(node);
         }
       }
      //Overridden so we can exit when window is closed
      protected void processWindowEvent(WindowEvent e) {
        super.processWindowEvent(e);
        if (e.getID() == WindowEvent.WINDOW_CLOSING) {
          System.exit(0);
        }
      }  void jTree1_valueChanged(TreeSelectionEvent e) {
        DefaultMutableTreeNode node1=(DefaultMutableTreeNode)jTree1.getLastSelectedPathComponent();
        DefaultMutableTreeNode node2=null;
        DefaultListModel lm=new DefaultListModel();
        String lists[];
        try{
          if(node1.toString()!="我的电脑"){
            file=new File(this.Convert(jTree1.getSelectionPath().toString()));
            lm.addElement("名称:"+node1.toString());
            if(file.isDirectory()){
              node1.removeAllChildren();
              lists=file.list();
              for(int i=0;i<lists.length;i++){
                node2=new DefaultMutableTreeNode(lists[i]);
                node1.add(node2);
              }
              lm.addElement("类型:  目录");
            }
            else{
              lm.addElement("类型: 文件");
            }
            lm.addElement("是否可读: "+file.canRead());
            lm.addElement("是否可写: "+file.canWrite());
            lm.addElement("大小: "+String.valueOf(file.length()));
            jList1.setModel(lm);
          }
        }
        catch(Exception ex){    }  }
      private String Convert(String path){
        String paths=new String();
        int pos1,pos2;
        pos1=path.indexOf(",");
        pos2=pos1;
        while(pos2>0){
          pos2=path.indexOf(",",pos1+1);
          if(pos2==-1){
            paths=paths+path.substring(pos1+2,path.length()-1);
          }
          else{
            paths=paths+path.substring(pos1+2,pos2)+"\\";
          }
          pos1=pos2;
        }
        return paths;
      }
    }