logo资料库

java任务栏的挑选.doc

第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
资料共16页,剩余部分请下载后查看
通过这次课程设计,我对Java语言有了更深刻的了解,增强了程序的编写能力,巩固了专业知识,对程序的模
课 程 设 计 报 告 学院、系: 吉林大学珠海学院计算机科学与技术系 专业名称: 计算机科学与技术 课程设计科目 java 程序课程设计 学生姓名: 指导教师: 完成时间: 陈舒韵 陈红玲 2012 年 3 月-7 月
(课程设计报告正文部分) 题目 3 一、设计任务与目标 编写一个窗口程序,该程序可以打开硬盘中的某个目录,并可以打开目录中 某个文件进行浏览。 设计要求: 1)在界面上设计两个文本区,一个用于显示打开的硬盘上的目录,另一用 于打开所选中该目录中的文件。 2)设计文本框,用于显示当前的目录位置 *3)设计一个“压缩”按钮,和一个指定目录文本框,将选中的这个文件压 缩到指定的目录中。 二、方案设计与论证 针对这道题的特点,首先做一个界面、构造一个目录树模型,用 swing 做界 面设计,JTree 实现系统目录,界面内容包括显示目录的文本框、显示目录树形 和显示目录中文件别表的两个文本区,分别设置监听器,监听目录树节点以及界 面内的一个 button,各个分功能对应各自的类。在做这道题时遇到最大的障碍就 是实现系统文件目录树中涵盖了 JTree 的大部分属性,这部分知识课本上只略微 提及了一下,参考了很多别人的程序,需要用到 File[] fles = file.listFiles() 这个技术(用以得到某文件夹下的子文件夹),目前为止自己也十分不熟悉,编 写的很多程序都是直接挪用别人的。因为技术有限,显示目录文件的文本区最后 只能做到显示目录文件名称,故最后第三问未能完成。
三、程序框图或流程图,程序清单与调用关系 主界面 显示目录路径 显示目录文件 显示树形目录 监听器 构造目录树模型 四、全部源程序清单 package kechengsheji; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; import javax.swing.*; import javax.swing.tree.*; import javax.swing.event.*; public class TiMu3 extends JFrame { public static final ImageIcon ICON_FOLDER = new ImageIcon("folder.gif"); 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_EXPANDEDFOLDER = new ImageIcon("expandedfolder.gif"); protected JTree m_tree; protected DefaultTreeModel m_model;//一个目录树模型 protected JTextField m_display;//m_display就是显示目录的那个JTextField protected JTextArea ta; public String s; public BufferedReader fin; public TiMu3() { super("Directories Tree"); setBounds(320, 100, 450, 400); DefaultMutableTreeNode top = new DefaultMutableTreeNode( new IconData(ICON_COMPUTER, null, "Computer"));//构造默认树形父节点, 名字为Computer 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])));//从k=0开始建立新的 节点 top.add(node);//在树形父节点下构造其孩子节点 node.add( new DefaultMutableTreeNode(new Boolean(true)));//在构 造的孩子节点下构造字节点 } m_model = new DefaultTreeModel(top);//以top节点为首节点建立一个目录树 m_tree = new JTree(m_model);//目录树以目录树模型m_model建立目录树 m_tree.putClientProperty("JTree.lineStyle", "Angled"); TreeCellRenderer renderer = new IconCellRenderer(); m_tree.setCellRenderer(renderer); m_tree.addTreeExpansionListener(new DirExpansionListener());//添加 模型 响应 m_tree.addTreeSelectionListener(new DirSelectionListener());//添
加响应 m_tree.getSelectionModel().setSelectionMode( TreeSelectionModel.SINGL E_TREE_SELECTION); m_tree.setShowsRootHandles(true); //设置显示源处理? m_tree.setEditable(false); //界面设置 JScrollPane s = new s.getViewport().add(m_tree);//把m_tree添加到滚动的Pane里去 add(s, BorderLayout.CENTER);//把s添加到JFrame的中区 JScrollPane();//新建一个滚动的Pane m_display = new JTextField();//显示目录的文本区 Panel p = new Panel();//新建一个面板p p.setLayout(new BorderLayout()); p.add(m_display,BorderLayout.CENTER);//把文本区添加到p的中区 Button b = new Button("确定");//新建一个“确定”按钮b b.addActionListener(new TT());//给Button添加监听器 p.add(b,BorderLayout.EAST);//把b添加到p的东区 add(p, BorderLayout.NORTH);//把p添加到JFrame的北区 ta=new JTextArea(12,12);//文本区用于打开所选中目录的文件 ta.setBackground(Color.yellow); JScrollPane s1 = new JScrollPane();//新建一个滚动的Pane(s1) s1.getViewport().add(ta);//把ta添加到滚动的Pane(s1)里去 add(s1, BorderLayout.SOUTH);//把s1添加到JFrame的南区 WindowListener wndCloser = new WindowAdapter() { public void windowClosing(WindowEvent e) { } System.exit(0); }; addWindowListener(wndCloser); setVisible(true); }//end of structured method
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(); } public void treeCollapsed(TreeExpansionEvent event) {} }//end of DirExpansionListener public void showFile(String s) { try{ File f = new File(s); ta.setText(f.getName()+'\n'); treeFile(f,1); }catch(Exception e) { System.out.println("读取文件结束!"); } } public void treeFile(File f,int level) { String srt = "-"; for(int i = 0;i
录树? { public void valueChanged(TreeSelectionEvent event) { DefaultMutableTreeNode node = getTreeNode( event.getPath()); FileNode fnode = getFileNode(node); if (fnode != null) m_display.setText(fnode.getFile(). getAbsolutePath());//返回路径名字符串 else m_display.setText(""); } }// end of class DirSelectionListener //这里是main方法,当要被别的类调用时就把此处注释 public static void main(String argv[]) { new TiMu3(); } }//end of class PathToSave JLabel implements TreeCellRenderer class IconCellRenderer extends { protected Color m_textSelectionColor; protected Color m_textNonSelectionColor; protected Color m_bkSelectionColor; protected Color m_bkNonSelectionColor; protected Color m_borderSelectionColor; protected boolean m_selected; public IconCellRenderer() //没有用? { super(); m_textSelectionColor = UIManager.getColor( "Tree.selectionForeground"); m_textNonSelectionColor = UIManager.getColor( "Tree.textForeground"); m_bkSelectionColor = UIManager.getColor( "Tree.selectionBackground"); m_bkNonSelectionColor = UIManager.getColor( "Tree.textBackground"); m_borderSelectionColor = UIManager.getColor(
分享到:
收藏