资源简介
该程序能够在jFrame的窗口下显示一棵文件树,树的节点与系统文件相对应,右键可以显示菜单,节点有windows的图标,非常好的一个java程序
代码片段和文件信息
//只要点击节点就会选中节点,如果是左击且是目录,不仅可以选中并添加子节点,还可以展开;如果是右击,则可以选中,也添加子节点,但不展开
//只要选中节点,节点监视器就会考虑该节点是否是目录,如果是目录就会添加子节点
//由于java中没有直接的copy文件操作,所以右键菜单项不设复制、剪切和黏贴,但是可以用拖动来实现剪切和黏贴
//------------------------------------
//图标还没有做
//运行可执行文件做了,但是对于空格的处理不理想
//鼠标右击删除已经完全做好了,重命名也做好了,打算不做new了在主界面上有new的按钮
//但是最好事先主界面上new和文件树的同步
//如果在该程序之外自行新建或删除文件,将无法显示,可以再下面添加一个刷新键
//------------------------------------
/*****
类 FileSystemView
FileSystemView 是 JFileChooser 的文件系统网关。由于 JDK1.1 File API 不允许对诸如根分区、文件类型信息或隐藏文件位之类的信息进行访问,
此类被设计成能够直接获得尽可能多的特定于 OS 的文件系统信息。
FileSystemView
Icon getSystemIcon(File f)
在系统文件浏览器中显示的文件、目录或文件夹的图标。
**/
import javax.swing.*;
import javax.swing.tree.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.event.*;
import java.io.*;
import java.io.File.*;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileSystemView;
public class MyTree
{
Jframe jf;
JTree tree;
DefaultTreeModel model;
PopupMenu pop = new PopupMenu();//右键菜单
MenuItem deleteItem = new MenuItem(“删除“);
MenuItem renameItem = new MenuItem(“重命名“);
DefaultMutableTreeNode root = new DefaultMutableTreeNode(new NodeData(null“我的电脑“));
//-----用于重命名时生成一个原节点的克隆体-------
DefaultMutableTreeNode aClone;
//----------------------------------------------
public void init()
{
jf = new Jframe(“树“);
File[] roots = File.listRoots();//获得系统根目录文件
for(int i = 0;i < roots.length;i ++)
{
DefaultMutableTreeNode node = new DefaultMutableTreeNode(new NodeData(roots[i]roots[i].getAbsolutePath()));
root.add(node);
}
tree = new JTree(root);
model = (DefaultTreeModel) tree.getModel();
//一次只能选中一个节点
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
//设置使用定制的节点绘制器
tree.setCellRenderer(new FolderRenderer());
//-------当用户编辑完节点model将产生一个model事件进而通知事件监听器节点已经修改了----
//e.path() 返回已更改节点的父节点的路径。
//e.childIndices() 返回更改节点的索引。
model.addTreeModelListener(new TreeModelListener()
{
public void treeNodesChanged(TreeModelEvent e)
{
//获得编辑后的节点的父节点
DefaultMutableTreeNode parent = (DefaultMutableTreeNode)(e.getTreePath().getLastPathComponent());
DefaultMutableTreeNode node;
int index;
/*
* If the event lists children then the changed
* node is the child of the node we‘ve already
* gotten. Otherwise the changed node and the
* specified node are the same.
*/
try
{
index = e.getChildIndices()[0];
node = (DefaultMutableTreeNode)(parent.getChildAt(index));
//System.out.println(aClone.toString());
//克隆体更新名称,file不变
((NodeData)aClone.getUserobject()).ChangeString(node.toString());
//删除选定节点
model.removeNodeFromParent(node);
//添加克隆体
model.insertNodeInto(aCloneparentindex);
}
catch (NullPointerException exc)
{
System.out.println(“model error“);
}
//系统实现改名
NodeData data = (NodeData) aClon
相关资源
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
- [免费]java实现有障碍物的贪吃蛇游戏
- java Servlet投票实例
- 操作系统作业 (pv,作业管理,等5个
- 基于C/S架构考试系统(Java)
- java access 仓库管理系统 源码
- 一元多项式相加 java实现
评论
共有 条评论