⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 folderexplorer.java

📁 图像管理 对图片进行预览的功能(参考ACDSee界面)。要求在界面中显示一个本地计算机中的文件夹的树形结构
💻 JAVA
字号:
package javaapplication3;import java.awt.*;import java.awt.event.*;import java.io.*;import java.util.*;import javax.swing.*;import javax.swing.tree.*;import javax.swing.event.*;   public class FolderExplorer extends JFrame{     JTree  tree;     DefaultTreeModel treeModel;     JLabel lbStatus =new JLabel();     static String dizhi ;     String [] changdizhi ;                   public FolderExplorer( ) {      try{  jbIint();      }catch (Exception e){e.printStackTrace();}         }       void jbIint( )throws Exception{    initTree();}              void initTree(){    DefaultMutableTreeNode top = new DefaultMutableTreeNode( "我的电脑");    DefaultMutableTreeNode node;    File[] roots = File.listRoots();    for (int k=0; k<roots.length; k++)    {      node = new DefaultMutableTreeNode( new FileNode(roots[k]));      top.add(node);      node.add( new DefaultMutableTreeNode(new String("Retrieving data")));  }  treeModel = new DefaultTreeModel(top);  tree = new JTree(treeModel);  tree.putClientProperty("JTree.lineStyle", "Angled");  tree.addTreeExpansionListener(new MyExpansionListener());  tree.addTreeSelectionListener(new MySelectionListener());  tree.getSelectionModel().setSelectionMode( TreeSelectionModel.SINGLE_TREE_SELECTION);   tree.setShowsRootHandles(true);   tree.setEditable(false);        }DefaultMutableTreeNode getTreeNode(TreePath path)   {       return (DefaultMutableTreeNode)(path.getLastPathComponent());   }FileNode getFileNode(DefaultMutableTreeNode node) {  if (node == null)   return null;  Object obj = node.getUserObject();  if (obj instanceof FileNode)   return (FileNode)obj;  else   return null; }class MyExpansionListener implements TreeExpansionListener    {        public void treeExpanded(TreeExpansionEvent event)        {             final DefaultMutableTreeNode node = getTreeNode(                event.getPath());             final FileNode fnode = getFileNode(node);            Thread runner = new Thread()             {              public void run()               {                if (fnode != null && fnode.expand(node))                 {                  Runnable runnable = new Runnable()                   {                    public void run()                     {                       treeModel.reload(node);                    }                  };                  SwingUtilities.invokeLater(runnable);                }              }            };            runner.start();        }        public void treeCollapsed(TreeExpansionEvent event) { }    }class MySelectionListener implements TreeSelectionListener  {       // private String imagename;     //    String[] fileNames;               int i;        private String[] fileNames;  public void valueChanged(TreeSelectionEvent event)  {      int j=0;    NewJFrame1.jPanel1.removeAll();   DefaultMutableTreeNode node = getTreeNode(event.getPath());   FileNode fileNode = getFileNode(node);   if (fileNode != null){    lbStatus.setText(fileNode.getFile().getAbsolutePath());    dizhi=fileNode.getFile().getAbsolutePath();                   File onefile = new File(dizhi);                File dir = new File(dizhi);    	         fileNames =dir.list();    	        for(int z=0;z<fileNames.length;z++)              {                    if(fileNames[z].endsWith("jpg")||fileNames[z].endsWith("gif")||fileNames[z].endsWith("png"))                    {                       j++;                    }                }                String [] changdizhi=new String[j];                String [] fileN=new String[j];                               for(int i = 0,k=0;i<fileNames.length;i++){                      if(fileNames[i].endsWith("jpg")||fileNames[i].endsWith("gif")||fileNames[i].endsWith("png"))                    { //System.out.println(fileNames[i]);                      changdizhi[k]=dizhi+"\\"+ fileNames[i];                      k++;                    }                }                              for(int i = 0,k=0;i<fileNames.length;i++){                      if(fileNames[i].endsWith("jpg")||fileNames[i].endsWith("gif")||fileNames[i].endsWith("png"))                    {                       fileN[k]= fileNames[i];                      k++;                    }                }//                int x=0;//                for(x=0;x<changdizhi.length;x++)//                  if(!changdizhi[x].equals(" "))   //            { System.out.println(changdizhi[x]);}//             fname=fileNames[j];               new DisplayImage(changdizhi,fileN);                    }      else    lbStatus.setText(" ");  } }public String getdizhi(){    return dizhi;}public class FileNode{ protected File file; public FileNode(File file) {  this.file = file; } public File getFile()  {      return file; } public String toString()  {   return file.getName().length() > 0 ? file.getName() : file.getPath(); } public boolean expand(DefaultMutableTreeNode parent) {  DefaultMutableTreeNode child = (DefaultMutableTreeNode)parent.getFirstChild();  if (child==null)   // No flag   return false;  Object obj = child.getUserObject();  if (!(obj instanceof String))   return false;      // Already expanded  parent.removeAllChildren();  // Remove Flag  File[] files = listFiles();  if (files == null)   return true;  Vector v = new Vector();  for (int k=0; k<files.length; k++)  {   File f = files[k];   if (!(f.isDirectory()))    continue;   FileNode newNode = new FileNode(f);   boolean isAdded = false;   for (int j=0; j<v.size(); j++)   {    FileNode node = (FileNode)v.elementAt(j);    if (newNode.compareTo(node) < 0)    {     v.insertElementAt(newNode, j);     isAdded = true;     break;    }   }   if (!isAdded)    v.addElement(newNode);  }  for (int i=0; i<v.size(); i++)  {   FileNode fileNode = (FileNode)v.elementAt(i); //  IconData idata = new IconData(FileTree1.ICON_FOLDER,  FileTree1.ICON_EXPANDEDFOLDER, fileNode);   DefaultMutableTreeNode node = new DefaultMutableTreeNode(fileNode);   parent.add(node);     if (fileNode.hasSubDirs())    node.add(new DefaultMutableTreeNode( new String("Retriveving data") ));  }  return true; } public boolean hasSubDirs() {  File[] files = listFiles();  if (files == null)   return false;  for (int k=0; k<files.length; k++)  {   if (files[k].isDirectory())    return true;  }  return false; }  public int compareTo(FileNode toCompare) {   return  file.getName().compareToIgnoreCase(toCompare.file.getName() );  } protected File[] listFiles() {  if (!file.isDirectory())   return null;  try  {   return file.listFiles();  }  catch (Exception ex)  {   JOptionPane.showMessageDialog(null,     "Error reading directory "+file.getAbsolutePath(),    "Warning", JOptionPane.WARNING_MESSAGE);   return null;  } }    }}     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -