文件管理器JAVA课程设计报告文档.docx

上传人:聆听****声音 文档编号:734180 上传时间:2023-04-29 格式:DOCX 页数:25 大小:187.94KB
下载 相关 举报
文件管理器JAVA课程设计报告文档.docx_第1页
第1页 / 共25页
文件管理器JAVA课程设计报告文档.docx_第2页
第2页 / 共25页
文件管理器JAVA课程设计报告文档.docx_第3页
第3页 / 共25页
文件管理器JAVA课程设计报告文档.docx_第4页
第4页 / 共25页
文件管理器JAVA课程设计报告文档.docx_第5页
第5页 / 共25页
文件管理器JAVA课程设计报告文档.docx_第6页
第6页 / 共25页
文件管理器JAVA课程设计报告文档.docx_第7页
第7页 / 共25页
文件管理器JAVA课程设计报告文档.docx_第8页
第8页 / 共25页
文件管理器JAVA课程设计报告文档.docx_第9页
第9页 / 共25页
文件管理器JAVA课程设计报告文档.docx_第10页
第10页 / 共25页
文件管理器JAVA课程设计报告文档.docx_第11页
第11页 / 共25页
文件管理器JAVA课程设计报告文档.docx_第12页
第12页 / 共25页
文件管理器JAVA课程设计报告文档.docx_第13页
第13页 / 共25页
文件管理器JAVA课程设计报告文档.docx_第14页
第14页 / 共25页
文件管理器JAVA课程设计报告文档.docx_第15页
第15页 / 共25页
文件管理器JAVA课程设计报告文档.docx_第16页
第16页 / 共25页
文件管理器JAVA课程设计报告文档.docx_第17页
第17页 / 共25页
文件管理器JAVA课程设计报告文档.docx_第18页
第18页 / 共25页
文件管理器JAVA课程设计报告文档.docx_第19页
第19页 / 共25页
文件管理器JAVA课程设计报告文档.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

文件管理器JAVA课程设计报告文档.docx

《文件管理器JAVA课程设计报告文档.docx》由会员分享,可在线阅读,更多相关《文件管理器JAVA课程设计报告文档.docx(25页珍藏版)》请在冰点文库上搜索。

文件管理器JAVA课程设计报告文档.docx

课 程 设 计 报 告

学院、系:

专业名称:

网络工程

课程设计科目 Java程序课程设计学生姓名:

指导教师:

完成时间:

2011年3月-5月

文件管理器

一、设计任务与目标

编写一个窗口程序,该程序可以打开硬盘中的某个目录,并可以打开目录中某个文件进行浏览。

设计要求:

1)在界面上设计两个文本区,一个用于显示打开的硬盘上的目录,另一用于打开所选中该目录中的文件。

2)设计文本框,用于显示当前的目录位置

*3)设计一个“压缩”按钮,和一个指定目录文本框,将选中的这个文件压缩到指定的目录中。

二、方案设计与论证

对于题目的要求1),使用布局管理器可以设计两个文本区。

对于题目要求2),使用JTextField文本框组件可以实现。

对于题目要求3),使用JButton按钮组件实现。

对于此题的设计要求,我从总体上进行了构思。

运用JavaSwing高级组件中的JTree树组件实现在图形用户界面(GUI)下文件浏览器的编制。

Javax.swing.JTree类提供了组件的功能,可以方便地显示多层次的数据,比

如Windows文件管理器中的文件列表就是有树状结构实现的。

本题设计要求就是Windows文件管理器的工作。

树组件有节点组成,对树组件的操作实际上就是对树上的节点做添置画叶的

操作。

树中最基本的对象是节点。

使用JTree的步骤:

(1)创建树

(2)对节点的选择做出响应

(3)自定义树的外观表现

(4)动态改变一棵树

(5)创建树的数据模型

(6)懒加载孩子

(7)如何写expansionlinstener

(8)如何写tree-will-expandlistener

利用JTree类,你可以显示等级体系的数据Jtree垂直显示它的数据。

树中显示的每一行包含一项数据,称之为节点(node)。

每颗树有一个根节点(rootnode),其他所有节点是它的子孙。

默认情况下,树只显示根节点,但是你可以设置改变默认显示方式。

一个节点可以拥有孩子也可以不拥有任何子孙。

我们称那些可以拥有孩子(不管当前是否有孩子)的节点为“分支节点”

(branchnodes),而不能拥有孩子的节点为“叶子节点”(leafnodes

)。

分支节点可以有任意多个孩子。

通常,用户可以通过点击实现展开或者折叠分支节点,使得他们的孩子可见或者不可见。

默认情况下,除了根节点以外的所有分支节点默认呈现折叠状态。

程序中,通过监听treeexpansion或者tree-will-expand事件可以检测分支节点的展开状态。

三、程序框图或流程图,程序清单与调用关系

开始

初始化窗口各个控件

添加控件事件监听

构造系统目录树模块

判断系统是否有WINRAR

把rar.exe拷贝到系统目录下并配置环境

①窗体初始模块加载 NO

系统关联打开文件

应用当前配置环境

对窗口控件进行布局

②压缩模块加载

显示窗口

关于对话框

构造及其刷新文件树

添加目录根节点

遍历添加盘符节点

添加节点选择事件监听

③事件监听关闭窗体

结束

获取文件对象

读取文件属性及其摘要,显示在右区域

多线程遍历子节点

把子节点添加到树中

添加节点展开事件监听

设置目录树的显示样式

树节点选择事件捕获

普通控件事件捕获,例如:

单击按钮启用不同功

④压缩文件

树节点展开事件捕获

刷新文件树

调用WINRAR环境中的

rar.exe进行压缩

获取目标文件位置

获取文件位置

①位于FileViewe类中的构造函数中(FileViewer.java)

②位于FileViewer类中Main方法中(FileViewer.java)

③其中普通事件监听方法位于FileViewe类中,树的两个特殊事件监控类位的于

DirExpansionListener和DirSelectionListener两个内部类中(FileViewer.java)

④位于Compress类中(Compress.java)

注:

其中FileNode类(FileNode.java)为文件节点类,故不在流程范围内

FileViwer流程图

version1.0

一、全部源程序清单

packagejluzh.fileViewer;

importjava.awt.*;importjava.awt.event.*;importjava.io.*;

importjava.text.DateFormat;

importjavax.swing.*;importjavax.swing.tree.*;importjavax.swing.event.*;

publicclassFileViewerextendsJFrame implementsActionListener

{

/**

*FileView程序的主窗口

*/

privatestaticfinallongserialVersionUID=1L; //Eclipse自动生成的序列化版本id号

privateJTree m_tree; //文件夹树privateDefaultTreeModelm_model; //默认树显示模式

privateJTextAream_rightTextArea; //右边的文本显示区域privateJTextFieldm_PathDisplay; //底部的路径显示区域

privateJButtonm_openBtn; //打开文件按钮privateJButtonm_compressBtn; //压缩文件按钮privateJButtonm_refreshBtn; //刷新按钮privateJButtonm_aboutBtn;

privateStringm_szFileExcutePath; //文件打开绝对路径

publicFileViewer()

{

束程序

super("FileViewer"); //设置窗口标题

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//在关闭窗口时候结

//

//***************************************************************************

*********

//初始化成员变量

//

//***************************************************************************

*********

/*其中m_tree的初始化在《构造系统目录树》中*/

/*其中m_model的初始化在《构造系统目录树》中*/

m_rightTextArea=newJTextArea();m_rightTextArea.setEditable(false); //右面文本显示区域不可写

m_PathDisplay=newJTextField();m_PathDisplay.setEditable(false); //下面路径显示区域不可写

//初始化按钮并添加事件响应

m_openBtn=newJButton("打开文件 利用系统关联打开文件");

m_openBtn.addActionListener(this);

m_compressBtn=newJButton("压缩 配置winrar成功时可用");

m_compressBtn.addActionListener(this);m_refreshBtn=newJButton("刷新");

m_refreshBtn.addActionListener(this);m_aboutBtn=newJButton("关于FileViewer");

m_aboutBtn.addActionListener(this);m_szFileExcutePath=null; //初始化文件打开路径

//

//***************************************************************************

*********

// 构造系统目录树 利用树自带的TreeExpansionListener对树进行

Expansion和Selection响应处理

//

//***************************************************************************

*********

DefaultMutableTreeNodetop; //树形目录的根节点DefaultMutableTreeNodenode; //系统的盘符的节点

File[]roots=File.listRoots(); //列出可用的文件系统盘符数组

");

//构造根节点,后面加空格为了增大左面板初始面积

top = new DefaultMutableTreeNode("我的电脑

//遍历所有盘符,增加到top的孩子节点里

for(intk=0;k

{

node=newDefaultMutableTreeNode(newFileNode(roots[k]));top.add(node);

node.add(newDefaultMutableTreeNode(newBoolean(true)));

//在构造的孩子节点下构造初始子节点,节点为true,使成为能扩展状态

}

m_model=newDefaultTreeModel(top); //设置默认模式根节点为topm_tree=newJTree(m_model); //按m_model模

式构造文件树

m_tree.putClientProperty("JTree.lineStyle","Angled"); //设置客户区样

m_tree.addTreeExpansionListener(newDirExpansionListener());//设置树展开事件响应处理

m_tree.addTreeSelectionListener(newDirSelectionListener());//设置树选择事件响应处理

为单选编辑

m_tree.getSelectionModel().setSelectionMode(

TreeSelectionModel.SINGLE_TREE_SELECTION); //设置选择模式m_tree.setEditable(false); //设置树为不可

//

//***************************************************************************

*********

//对窗口的界面进行处理

//

//***************************************************************************

*********

JPanelleftPanel=newJPanel(); //左边区域的pane的设置leftPanel.setLayout(newBorderLayout());

JScrollPanescroll_tree=newJScrollPane(m_tree); //给树形区

域添加滚动条

leftPanel.add(scroll_tree,BorderLayout.CENTER); //加入文件树到左区域

leftPanel.add(m_refreshBtn,BorderLayout.SOUTH); //添加刷新

按钮

leftPanel.add(m_aboutBtn,BorderLayout.NORTH); //添加关于

按钮

JPanelringhtPanel=newJPanel(); //右边区域的pane的设置ringhtPanel.setBackground(Color.WHITE);ringhtPanel.setLayout(newBorderLayout());

JScrollPanescroll_text=newJScrollPane(m_rightTextArea);//给本文区

域添加滚动条

ringhtPanel.add(scroll_text,BorderLayout.CENTER); //加入文本显示到右区域

ringhtPanel.add(m_openBtn,BorderLayout.NORTH); //加入打开按钮ringhtPanel.add(m_compressBtn,BorderLayout.SOUTH); //加入压缩按钮

JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,leftPanel,ringhtPanel);//垂直分割左右pane

getContentPane().add(split,BorderLayout.CENTER); //分割pane置中

getContentPane().add(m_PathDisplay,BorderLayout.SOUTH); //路径显示置于底部

setSize(800,600); //设置窗口大小

setLocation(200,100);//设置位置setVisible(true); //显示窗口

}

@Override

///////////////////////////////////

//通用事件处理

///////////////////////////////////

publicvoidactionPerformed(ActionEvente){

//TODOAuto-generatedmethodstubif(e.getSource()==this.m_openBtn)//打开文件

{

if(this.m_szFileExcutePath==null)

{

JOptionPane.showMessageDialog(null,

"盘符、文件夹等没有系统文件后缀关联,所以无法打开",

"警告",JOptionPane.WARNING_MESSAGE);return;

}

try{

Runtime.getRuntime().exec("cmd /c start"+this.m_szFileExcutePath);

}catch(IOExceptione1){

//TODOAuto-generatedcatchblocke1.printStackTrace();

}

}

if(e.getSource()==this.m_compressBtn)//压缩文件

{

if(m_szFileExcutePath==null)

{

JOptionPane.showMessageDialog(null,

"盘符、文件夹等没有系统文件后缀,不支持压缩操作",

"警告",JOptionPane.WARNING_MESSAGE);

}

else

{

newCompress(m_szFileExcutePath);

}

}

if(e.getSource()==this.m_refreshBtn)//刷新文件夹树

{

DefaultMutableTreeNodetop; //树形目录的根节点DefaultMutableTreeNodenode; //系统的盘符的节点

File[]roots=File.listRoots(); //列出可用的文件系统盘符数组

");

//构造根节点,后面加空格为了增大左面板初始面积

top = new DefaultMutableTreeNode("我的电脑

//遍历所有盘符,增加到top的孩子节点里for(intk=0;k

{

node=newDefaultMutableTreeNode(newFileNode(roots[k]));top.add(node);

node.add(newDefaultMutableTreeNode(newBoolean(true)));

//在构造的孩子节点下构造初始子节点,节点为true,使成为能扩展状

}

m_model=newDefaultTreeModel(top);//重新构造树形模式m_tree.setModel(m_model);

m_szFileExcutePath=null; //清空当前路径m_PathDisplay.setText(null); //清空路径显示框m_rightTextArea.setText(null); //清空右方文本区域

}

if(e.getSource()==this.m_aboutBtn)//关于窗口

{

JOptionPane.showMessageDialog(null,

"作者:

",

"关于FileViewer",JOptionPane.DEFAULT_OPTION);

}

}

/**********************************************************

*用于响应树节点展开事件

*内部事件响应类

*/

classDirExpansionListenerimplementsTreeExpansionListener

{

//树展开事件

publicvoidtreeExpanded(TreeExpansionEventevent)

{

//TODOAuto-generatedmethodstub

finalDefaultMutableTreeNodenode=getTreeNode(event.getPath());

//要展开的树节点

finalFileNodefnode=getFileNode(node);

//转换为要展开的文件节点

//多线程BFS遍历生成所有子节点Threadrunner=newThread()

{

publicvoidrun()

{

if(fnode!

=null&&fnode.expand(node))//如果节点不为空,还有可扩展节点(子节点)

{

Runnablerunnable=newRunnable()

{

publicvoidrun()

{

m_model.reload(node); //在模式里刷新本子

}

};

到线程队列

}

};

SwingUtilities.invokeLater(runnable);//把runnable加入

}

runner.start();

}

//树折叠事件(不处理)

publicvoidtreeCollapsed(TreeExpansionEventevent)

{

//TODOAuto-generatedmethodstub

}

}

/**********************************************************

*用于响应树节点选中事件

*内部事件响应类

*/

classDirSelectionListenerimplementsTreeSelectionListener

{

publicvoidvalueChanged(TreeSelectionEventevent)

{

的树节点

DefaultMutableTreeNodenode=getTreeNode(event.getPath());//选中

FileNodefnode=getFileNode(node); //转换

为选中的文件节点

if(fnode!

=null) //判断选中的是否为有效文件节点

{

m_PathDisplay.setText(fnode.getFile().getAbsolutePath()); //在底部显示绝对路径

Filef=fnode.getFile();longlen=f.length();

Stringf_Attribute="属性:

\n"; //文件的属性字符串

+"\n";

if(f.isFile())f_Attribute+=" 文件名称:

"+f.getName()

elsef_Attribute+=" 文件夹名:

"+f.getName()+"\n";f_Attribute+=" 文件路径:

"+f.getPath()+"\n";if(f.isFile())

{

f_Attribute+=" 文件长度:

"+len+"字节\n";

式对象

DateFormatdf=DateFormat.getDateInstance();//创建时间格

f_Attribute += " 修改时间:

" +

df.format(f.lastModified())+"\n";

读";

if(f.canRead())f_Attribute+=" 当前权限:

"+"可

elsef_Attribute+=" 当前权限:

"+"不可读";if(f.canWrite())f_Attribute+="可写"+"\n";

elsef_Attribute+="不可写"+"\n";FileReaderfr=null;

try{

fr=newFileReader(f.getPath());

}catch(FileNotFoundExceptione){

//TODOAuto-generated

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2