1、*3)设计一个“压缩”按钮,和一个指定目录文本框,将选中的这个文件压缩到指定的目录中。二、方案设计与论证对于题目的要求1),使用布局管理器可以设计两个文本区。 对于题目要求2),使用JTextField文本框组件可以实现。 对于题目要求3),使用JButton按钮组件实现。对于此题的设计要求,我从总体上进行了构思。运用Java Swing高级组件中的JTree树组件实现在图形用户界面(GUI)下文件浏览器的编制。 ,可以方便地显示多层次的数据,比如Windows文件管理器中的文件列表就是有树状结构实现的。本题设计要求就是Windows文件管理器的工作。树组件有节点组成,对树组件的操作实际上就是
2、对树上的节点做添置画叶的操作。树中最基本的对象是节点。使用JTree的步骤: (1)创建树(2)对节点的选择做出响应(3)自定义树的外观表现(4)动态改变一棵树(5)创建树的数据模型(6)懒加载孩子(7)如何写expansion linstener(8)如何写tree-will-expand listener利用 JTree 类,你可以显示等级体系的数据Jtree 垂直显示它的数据。树中显示的每一行包含一项数据,称之为节点( node )。每颗树有一个根节点( root node ),其他所有节点是它的子孙。默认情况下,树只显示根节点,但是你可以设置改变默认显示方式。一个节点可以拥有孩子也可以
3、不拥有任何子孙。我们称那些可以拥有孩子(不管当前是否有孩子)的节点为“分支节点”( branch nodes ),而不能拥有孩子的节点为“叶子节点”( leaf nodes )。 分支节点可以有任意多个孩子。通常,用户可以通过点击实现展开或者折叠分支节点,使得他们的孩子可见或者不可见。默认情况下,除了根节点以外的所有分支节点默认呈现折叠状态。程序中,通过监听 tree expansion 或者 tree-will-expand 事件可以检测分支节点的展开状态。三、程序框图或流程图,程序清单与调用关系一、 全部源程序清单package jluzh.fileViewer;import java.a
4、wt.*;import ;import java.io.*;import javax.swing.*;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
5、_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); /设置窗口标
6、题 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /在关闭窗口时候结束程序 / /* / 初始化成员变量 /*其中m_tree的初始化在构造系统目录树中*/ /*其中m_model的初始化在构造系统目录树中*/ m_rightTextArea = new JTextArea(); m_rightTextArea.setEditable(false); /右面文本显示区域不可写 m_PathDisplay = new JTextField(); m_PathDisplay.setEditable(false); /下面路径显示区域不可写
7、 /初始化按钮并添加事件响应 m_openBtn = new JButton(打开文件-利用系统关联打开文件 m_openBtn.addActionListener(this); m_compressBtn = new JButton(压缩-配置winrar成功时可用 m_compressBtn.addActionListener(this); m_refreshBtn = new JButton(刷新 m_refreshBtn.addActionListener(this); m_aboutBtn = new JButton(关于FileViewer m_aboutBtn.addAction
8、Listener(this); m_szFileExcutePath = null; /初始化文件打开路径 / 构造系统目录树 利用树自带的TreeExpansionListener对树进行Expansion和Selection响应处理 DefaultMutableTreeNode top; /树形目录的根节点 DefaultMutableTreeNode node; /系统的盘符的节点 File roots = File.listRoots(); /列出可用的文件系统盘符数组 /构造根节点,后面加空格为了增大左面板初始面积 top = new DefaultMutableTreeNode(我
9、的电脑 /遍历所有盘符,增加到top的孩子节点里 for (int k=0; kroots.length; k+) node = new DefaultMutableTreeNode(new FileNode(rootsk); top.add(node); node.add( new DefaultMutableTreeNode(new Boolean(true); /在构造的孩子节点下构造初始子节点,节点为true,使成为能扩展状态 m_model = new DefaultTreeModel(top); /设置默认模式根节点为 top m_tree = new JTree(m_model)
10、; /按m_model模式构造文件树 m_tree.putClientProperty(JTree.lineStyle, Angled /设置客户区样式 m_tree.addTreeExpansionListener(new DirExpansionListener(); /设置树展开事件响应处理 m_tree.addTreeSelectionListener(new DirSelectionListener(); /设置树选择事件响应处理 m_tree.getSelectionModel().setSelectionMode( TreeSelectionModel.SINGLE_TREE_S
11、ELECTION); /设置选择模式为单选 m_tree.setEditable(false); /设置树为 不可编辑 / 对窗口的界面进行处理 JPanel leftPanel = new JPanel(); /左边区域的pane的设置 leftPanel.setLayout(new BorderLayout(); JScrollPane scroll_tree = new JScrollPane(m_tree); /给树形区域添加滚动条 leftPanel.add(scroll_tree, BorderLayout.CENTER); /加入文件树到左区域 leftPanel.add(m_r
12、efreshBtn, BorderLayout.SOUTH); /添加刷新按钮 leftPanel.add(m_aboutBtn, BorderLayout.NORTH); /添加关于按钮 JPanel ringhtPanel = new JPanel(); /右边区域的pane的设置 ringhtPanel.setBackground(Color.WHITE); ringhtPanel.setLayout(new BorderLayout(); JScrollPane scroll_text = new JScrollPane(m_rightTextArea); /给本文区域添加滚动条 ringhtPanel.add(scroll_text, BorderLayout.CENTER); /加入文本显示到右区域 ringhtPanel.add(m_openBtn, BorderLayout.NORTH); /加入打开按钮 ringhtPanel.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1