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

📄 ucoolmanager.java

📁 UCool网络硬盘
💻 JAVA
字号:
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;

public class UCoolManager extends JFrame
{
  
 public static final ImageIcon ICON_COMPUTER =new ImageIcon("computer.gif");
 public static final ImageIcon ICON_DISK =new ImageIcon("disk.gif");
 public static final ImageIcon ICON_FOLDER =new ImageIcon("folder.gif");
 public static final ImageIcon ICON_EXPANDEDFOLDER =new ImageIcon("expandedfolder.gif");

 protected JTree  m_tree;
 protected DefaultTreeModel m_model;
 protected JTextField m_display;
 protected JToolBar toolbar;
 protected JButton downloadButton;
 protected JButton uploadButton;

 public UCoolManager()
 {
  super("Directories Tree");
  init();
  setSize(400, 300);
  setVisible(true);
 }
	//初始化
	public void init(){
		DefaultMutableTreeNode top = new DefaultMutableTreeNode(
		   new IconData(ICON_COMPUTER, null, "我的硬盘"));//Tree的顶层目录
		  //DefaultMutableTreeNode netHardDisk=new DefaultMutableTreeNode(new IconData(ICON_COMPUTER,null,"网络硬盘"));//定义网络硬盘的目录
		  DefaultMutableTreeNode node;
		  File[] roots = File.listRoots();
		  for (int k=0; k<roots.length; k++)
		  {
		   node = new DefaultMutableTreeNode(new IconData(ICON_DISK,null, new FileNode(roots[k])));
		   top.add(node);
		   node.add( new DefaultMutableTreeNode(new Boolean(true)));
		  }
		  /*网络硬盘设置子文件夹
		  for (int k=0; k<roots.length; k++)
			{
			 node = new DefaultMutableTreeNode(new IconData(ICON_DISK,
			  null, new FileNode(roots[k])));
			 netHardDisk.add(node);
			  node.add( new DefaultMutableTreeNode(new Boolean(true)));
			  //node.add( new DefaultMutableTreeNode("OK"));
			}
			top.add(netHardDisk);
			*/
		  m_model = new DefaultTreeModel(top);
		  m_tree = new JTree(m_model);

		  m_tree.putClientProperty("JTree.lineStyle", "Angled");

			//设置Tree目录格式
		  TreeCellRenderer renderer = new IconCellRenderer();
		  m_tree.setCellRenderer(renderer);//

		  m_tree.addTreeExpansionListener(new DirExpansionListener());
		  m_tree.addTreeSelectionListener(new DirSelectionListener());

		  m_tree.getSelectionModel().setSelectionMode(
		//TreeSelectionModel.CONTIGUOUS_TREE_SELECTION);//只能连选
		  TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION );//不连选,可以跳选
		  m_tree.setShowsRootHandles(true);
		  m_tree.setEditable(false);
			
		  toolbar=new JToolBar();//
		//toolbar.setBorder(BorderFactory.createLineBorder(Color.black));
		  downloadButton=new JButton(new ImageIcon("download.gif"));
		  uploadButton=new JButton(new ImageIcon("upload.gif"));
		  downloadButton.setBorder(BorderFactory.createRaisedBevelBorder());
		  uploadButton.setBorder(BorderFactory.createRaisedBevelBorder());
		  downloadButton.setToolTipText("下载");
		  uploadButton.setToolTipText("上传");
		  downloadButton.setActionCommand("downloadButton");
		  downloadButton.addActionListener(new ButtonAction());
		  //uploadButton.addActionListener();
		  toolbar.add(downloadButton);
		  toolbar.add(uploadButton);
		  getContentPane().add(toolbar,BorderLayout.NORTH);
		  
		  JScrollPane s = new JScrollPane();
		  s.getViewport().add(m_tree);
		  getContentPane().add(s, BorderLayout.CENTER);

		  m_display = new JTextField();
		  //m_display.setBackground(Color.BLUE);
		  m_display.setEditable(false);
		  getContentPane().add(m_display, BorderLayout.SOUTH);

		  WindowListener wndCloser = new WindowAdapter()
		  {
		   public void windowClosing(WindowEvent e)
		   {
			System.exit(0);
		   }
		  };
		  addWindowListener(wndCloser);
	}	
//得到树节点	
 DefaultMutableTreeNode getTreeNode(TreePath path)
 {
  return (DefaultMutableTreeNode)(path.getLastPathComponent());
 }
//得到文件节点
 FileNode getFileNode(DefaultMutableTreeNode node)
 {
  if (node == null)
   return null;
  Object obj = node.getUserObject();
  if (obj instanceof IconData)
   obj = ((IconData)obj).getObject();
  if (obj instanceof FileNode)
   return (FileNode)obj;
  else
   return null;
 }

	// Make sure expansion is threaded and updating the tree model
	// only occurs within the event dispatching thread.
	class DirExpansionListener 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()
					{
					   m_model.reload(node);
					}
				  };
				  SwingUtilities.invokeLater(runnable);
				}
			  }
			};
			runner.start();
			m_model.reload(node);
		}

		public void treeCollapsed(TreeExpansionEvent event) {}
	}


 class DirSelectionListener
  implements TreeSelectionListener
 {
  public void valueChanged(TreeSelectionEvent event)
  {
  	/*单选显示的路径
   DefaultMutableTreeNode node = getTreeNode(event.getPath());
   FileNode fnode = getFileNode(node);
   if (fnode != null)
	m_display.setText(fnode.getFile().getAbsolutePath());
	*/
	/*
	String allPath="";
	FileNode fnode=new FileNode();
	DefaultMutableTreeNode node;
	TreePath[] tse=event.getPaths();
	for(int i=1;i<tse.length;i++){
		System.out.println(tse.length);
	node=getTreeNode(tse[i]);
	fnode=getFileNode(node);
	allPath+=fnode.getFile().getAbsoluteFile();
	if(fnode!=null){
		m_display.setText(allPath);
		}
		else
		   m_display.setText("");
		 }
	}*/
	//多个路径并选
	TreePath[] tp=m_tree.getSelectionPaths();
	String allPath="";
	FileNode fnode=new FileNode();
	DefaultMutableTreeNode node;
	for(int i=0;i<tp.length;i++){
		node=getTreeNode(tp[i]);
		fnode=getFileNode(node);
		allPath+=fnode.getFile().getAbsoluteFile()+" & ";
	}
	if(fnode!=null){
		int i=allPath.lastIndexOf("&");
		allPath=allPath.substring(0,i);
		m_display.setText(allPath);
	}
	else
		m_display.setText("");
 }
}

 public static void main(String argv[])
 {	
   try {
	UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
	Font font=new Font("宋体",Font.PLAIN,12);
	String names[]={"Label","CheckBox","PopupMenu","TextPane",
				   "MenuItem","CheckBoxMenuItem","JRadioButtonMenuItem",
				   "ComboBox","Button","Tree","ScrollPane","TabbedPane",
				   "EditorPane","TitledBorder","Menu","TextArea","OptionPane",
				   "MenuBar","ToolBar","ToggleButton","ToolTip","ProgressBar",
				   "TableHeader","Panel","List","ColorChooser","PasswordField",
				   "TextField","Table","Label","Viewport","RadioButtonMenuItem",
				   "RadioButton"};
	for(int i=0;i<names.length;i++)UIManager.put(names[i]+".font",font);
	UIManager.put("Label.foreground",Color.black);
	UIManager.put("Border.foreground",Color.black);
	UIManager.put("TitledBorder.titleColor",Color.black);
	new UCoolManager();
	
 }
 catch(Exception e){
	e.printStackTrace();
 }
 }
}






⌨️ 快捷键说明

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