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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

文件管理器JAVA课程设计报告课程设计报告学院、系专业名称网络工程课程设计科目Java程序课程设计学生姓名指导教师完成时间2011年3月-5月文件管理器
一、设计任务与目标编写一个窗口程序,该程序可以打开硬盘中的某个目录,并可以打开目录中某个文件进行浏览。

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

2)设计文本框,用于显示当前的目录位置*3)设计一个“压缩”按钮,和一个指定目录文本框,将选中的这个文件压缩到指定的目录中。

二、方案设计与论证对于题目的要求1,使用布局管理器可以设计两个文本区。

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

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

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

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

Javax.swing.JTree类提供了组件的功能,可以方便地显
示多层次的数据,比如Windows文件管理器中的文件列表就是有树状结构实现的。

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

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

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

使用JTree的步骤(1)创建树(2)对节点的选择做出响应(3)自定义树的外观表现(4)动态改变一棵树(5)创建树的数据模型(6)懒加载孩子(7)如何写expansion linstener (8)如何写tree-will-expand listener 利用JTree 类,你可以显示等级体系的数据Jtree 垂直显示它的数据。

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

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

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

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

我们称那些可以拥有孩子(不管当前是否有孩子)的节点为“分支节点”(branch nodes ),而不能拥有孩子的节点为“叶子节点”(leaf nodes )。

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

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

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

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

三、程序框图或流程图,程序清单与调用关系构造及其刷新文件树回调关闭窗体FileViwer流程图version 1.0 ①位于FileViewe类中的构造函数中FileViewer.java ②位于FileViewer类中Main方法中FileViewer.java ③其中普通事件监听方法位于FileViewe类中,树的两个特殊事件监控类位的于DirExpansionListener和DirSelectionListener 两个内部类中FileViewer.java ④位于Compress类中Compress.java 注其中FileNode类FileNode.java为文件节点类,故不在流程范围内调用WINRAR环境中的rar.exe进行压缩获取目标文件位置获取文件位置把子节点添加到树中多线程遍历子节点树节点展开事件捕获读取文件属性及其摘要,显示在右区域获取文件对象树节点选择事件捕获普通控件事件捕获,例如单击按钮启用不同功能④压缩文件刷新文件树系统关联打开文件关于对话框应用当前配置环境NO 判断系统是否有WINRAR 把rar.exe拷贝到系统目录下并配置环境设置目录树的显示样式添加节点展开事件监听添
加节点选择事件监听遍历添加盘符节点添加目录根节点显示窗口添加控件事件监听对窗口控件进行布局构造系统目录树模块初始化窗口各个控件结束③事件监听开始②压缩模块加载①窗体初始模块加载
一、全部源程序清单package jluzh.fileViewer; import java.awt.*; import java.awt.event.*; import java.io.*; import java.text.DateFormat; import javax.swing.*; import javax.swing.tree.*; import javax.swing.event.*; public class FileViewer extends JFrame implements ActionListener { /** * FileView程序的主窗口*/ private static final long serialVersionUID 1L;//Eclipse自动生成的序列化版本id号private JTree m_tree;//文件夹树private DefaultTreeModel m_model;//默认树显示模式private JTextArea m_rightTextArea;//右边的文本显示区域private JTextField m_PathDisplay;//底部的路径显示区域private JButton m_openBtn;//打开文件按钮private JButton m_compressBtn;//压缩文件按钮private JButton m_refreshBtn;//刷新按钮private JButton m_aboutBtn; private String m_szFileExcutePath;//文件打开绝对路径public FileViewer { super“FileViewer“; //设置窗口标题this.setDefaultCloseOperationJFrame.EXIT_ON_CLOSE; //在关闭窗口时候结束程序//
//************************************************** ********************************** // 初始化成员变量//
//************************************************** ********************************** /*其中m_tree的初始化在构造系统目录树中*/ /*其中m_model的初始化在构造系统目录树中*/ m_rightTextArea new JTextArea; m_rightTextArea.setEditablefalse;//右面文本显示区域不可写m_PathDisplay new JTextField; m_PathDisplay.setEditablefalse;//下面路径显示区域不可写//初始化按钮并添加事件响应m_openBtn new JButton“打开文件----利用系统关联打开文件“; m_openBtn.addActionListenerthis; m_compressBtn new JButton“压缩----配置winrar成功时可用“; m_compressBtn.addActionListenerthis; m_refreshBtn new JButton“刷新“; m_refreshBtn.addActionListenerthis; m_aboutBtn new JButton“关于FileViewer“; m_aboutBtn.addActionListenerthis; m_szFileExcutePath null;//初始化文件打开路径// //************************************************** ********************************** // 构造系统目录树利用树自带的TreeExpansionListener对树进行Expansion和
Selection响应处理// //************************************************** ********************************** DefaultMutableTreeNode top; //树形目录的根节点DefaultMutableTreeNode node;//系统的盘符的节点File[] roots File.listRoots;//列出可用的文件系统盘符数组//构造根节点,后面加空格为了增大左面板初始面积top new DefaultMutableTreeNode“我的电脑“; //遍历所有盘符,增加到top的孩子节点里for int k0; k 0 m_file.getName m_file.getPath; } // ////////////////////////// // 返回此节点的第一个子节点是否存在// ////////////////////////// public boolean expandDefaultMutableTreeNode parent { DefaultMutableTreeNode firstChild DefaultMutableTreeNodeparent.getFirstChild; if firstChild nullreturn false; Object obj firstChild.getUserObject; //返回此节点的用户对象if obj instanceof Booleanreturn false;//节点已经被扩展了parent.removeAllChildren; //释放子节点File[] files listFiles; //获得本对象的文件列表数组if files null return true;//节点本身是一个并没有展开的文件夹Vector v new Vector;//自增长数组v //**//遍历文件数组,转换为自增长数组v for int k0; kfiles.length; k//遍历文件数组{ File f files[k]; FileNode newNode new FileNodef; //*//遍历自增长
数组v,确认文件子节点是否已经被添加到v中,如果没有添加到v中,则添加boolean isAdded false;//设置添加标记false for int i0; iv.size; i//遍历自增长数组{ FileNode nd FileNodev.elementAti; if pareTond 0//比较在v 中获取的节点{ v.insertElementAtnd, i; isAdded true; break; } } if isAdded v.addElementnewNode;//我那件数组元素加入v } //**//遍历字增长数组v,如果文件节点为一个文件夹,则确认其为一个新的子树根for int i0; iv.size; i { FileNode fnd FileNodev.elementAti; DefaultMutableTreeNode node new DefaultMutableTreeNodefnd; parent.addnode; if fnd.hasSubDirs { node.addnew DefaultMutableTreeNode new Booleantrue ; //确认为新子树根} } return true; } // ////////////////////////// // 判断是否有子目录// ////////////////////////// public boolean hasSubDirs { File[] files listFiles; if files nullreturn false; else return true; } // ////////////////////////// // 比较文件节点是否相同// ////////////////////////// public int compareToFileNode toCompare { return m_pareToIgnoreCasetoCompare.m_file.getNa me ; } // ////////////////////////// // 返回本节点的文件列表数组// ////////////////////////// protected File[] listFiles { if m_file.isDirectory return null; //如果本身是一个没有扩展的文
件夹,返回空try {。

相关文档
最新文档