• 课程设计---实现简易文件资源管理器


    一、小组成员介绍

    小组成员 介绍 主要工作
    许意杰 组长 GUI设计,程序整合
    尤志峰 组员 功能设计:创建菜单栏,创建工具条,新建文件命令,打开文件命令,保存命令
    陈浩 组员 功能设计:退出命令,剪切命令,拷贝命令,粘贴命令,关于选项命令

    二、项目架构、主要流程以及UML类图

    项目架构:

    主要流程:

    UML图

    三、程序演示

    1.查找文件功能

    2.实现文件的拷贝与粘贴功能

    3.实现文本类的预览功能

    4.实现文件的重命名功能

    5.实现对某个文件夹进行统计功能

    四、程序源代码

    1.窗口设计

    在主接口中设计一个EditorDemo容器继承自JFrame,并在其中加入菜单栏、工具栏和一个文本域控件。 
    public class EditorDemo extends JFrame
    JTextPane textPane = new JTextPane(); //创建文本窗格,编辑窗口
    JFileChooser filechooser = new JFileChooser(); //文件选择器
    setJMenuBar(createJMenuBar(actions));  //设置菜单栏
    Container container = getContentPane(); //得到容器
        container.add(createJToolBar(actions), BorderLayout.NORTH); //工具栏
    container.add(textPane, BorderLayout.CENTER); //增加文本窗格 
    

    2.功能设计

    在下拉菜单中加入子菜单并进行监听,分别实现对文件的操作功能。点击不同菜单项时,显示不同接口。
    private JMenuBar createJMenuBar(Action[] actions)  //创建菜单栏
    	JMenuBar menubar = new JMenuBar(); //实例化菜单栏
    	JMenu menuFile = new JMenu("文件(F)"); //实例化菜单
      JMenu menuEdit = new JMenu("编辑(E)");
    	JMenu menuFormat = new JMenu("格式(O)");
    	JMenu menuFind = new JMenu("查找(V)");
    	JMenu menuAbout = new JMenu("帮助(H)");
    	menuFile.add(new JMenuItem(actions[0])); //增加新菜单项
    	menuFile.add(new JMenuItem(actions[1]));
    	menuFile.add(new JMenuItem(actions[2]));
    	menuFile.addSeparator();
    	menuFile.add(new JMenuItem(actions[7]));
    	menuEdit.add(new JMenuItem(actions[3]));
    	menuEdit.add(new JMenuItem(actions[4]));
    	menuEdit.add(new JMenuItem(actions[5]));
    	menuAbout.add(new JMenuItem(actions[6]));
    	menubar.add(menuFile); //增加菜单
    	menubar.add(menuEdit);
    	menubar.add(menuFormat);
    	menubar.add(menuFind);
    	menubar.add(menuAbout);
    	return menubar; //返回菜单栏
    

    3.加入工具栏的功能键,通过工具栏实现对文本的基本操作。

    Action[] actions =  //Action数组,各种操作命令
    				new NewAction(),
    				new OpenAction(),
    				new SaveAction(),
    				new CutAction(),
    				new CopyAction(),
    				new PasteAction(),
    				new AboutAction(),
    				new ExitAction(),
    private JToolBar createJToolBar(Action[] actions) //创建工具条
    	JToolBar toolBar = new JToolBar(); //实例化工具条	 
    	JButton bt = new JButton(actions[i]); //实例化新的按钮
    	toolBar.add(bt); //增加按钮到工具栏
    
    

    4.对每个菜单项进行注册监听。点击不同功能键时,实现不同的操作,显示不同的窗口。

    class NewAction extends AbstractAction { //实现新建文件命令功能
    		public NewAction() {
    			super("新建文本");}
    		public void actionPerformed(ActionEvent e) {
    			textPane.setDocument(new DefaultStyledDocument()); //清空文档
    		}}
    class OpenAction extends AbstractAction { //实现打开文件命令功能
    		public OpenAction() {
    			super("打开文本");}
    		public void actionPerformed(ActionEvent e) {
    			int i = filechooser.showOpenDialog(EditorDemo.this); 
                     //显示打开文件对话框
    			if (i == JFileChooser.APPROVE_OPTION) { //点击对话框中打开选项
    				File f = filechooser.getSelectedFile(); //得到选择的文件
    			try {
    				InputStream is = new FileInputStream(f); //得到文件输入流
    					textPane.read(is, "d"); //读入文件到文本窗格
    				} catch (Exception ex) {
    					ex.printStackTrace();  //输出出错信息
    				}}}}
    	class SaveAction extends AbstractAction {  //实现保存文本命令
    		public SaveAction() {
    			super("保存文本");}
    		public void actionPerformed(ActionEvent e) {
    			int i = filechooser.showSaveDialog(EditorDemo.this); 
    //显示保存文件对话框
    			if (i == JFileChooser.APPROVE_OPTION) {  //点击对话框中保存按钮
    				File f = filechooser.getSelectedFile(); //得到选择的文件
    				try {
    					FileOutputStream out = new FileOutputStream(f);  
    //得到文件输出流
    					out.write(textPane.getText().getBytes()); //写出文件
    				} catch (Exception ex) {
    					ex.printStackTrace(); //输出出错信息	}}}}
    class ExitAction extends AbstractAction { //实现退出命令
    		public ExitAction() {
    			super("退出系统");}
    		public void actionPerformed(ActionEvent e) {
    			System.exit(0);  //退出程序}}
    class CutAction extends AbstractAction {  //实现剪切命令
    		public CutAction() {
    			super("剪切");}
    		public void actionPerformed(ActionEvent e) {
    			textPane.cut();  //调用文本窗格的剪切命令}}
    class CopyAction extends AbstractAction {  //实现拷贝命令
    		public CopyAction() {
    			super("拷贝");}
    		public void actionPerformed(ActionEvent e) 
    {textPane.copy();  //调用文本窗格的拷贝命令
    class PasteAction extends AbstractAction {  //实现粘贴命令
    public PasteAction() {
    			super("粘贴");}
    		public void actionPerformed(ActionEvent e) {
    			textPane.paste();  //调用文本窗格的粘贴命令}}
    class AboutAction extends AbstractAction { //关于版本命令
    		public AboutAction() {
    			super("版本");}
    		public void actionPerformed(ActionEvent e) {
    String str="简易记事本
    
    版本:1.0
    作者:许意杰,陈浩,尤志锋
    主要功能:实现简单文本编辑。";主要功能:实现简单文本编辑。 
    		JOptionPane.showMessageDialog(EditorDemo.this, str); //显示软件信息
    		}}
    
  • 相关阅读:
    js跳出循环
    JavaScript prototype属性
    【DP专题】——洛谷P2279:消防局的设立
    转:android中dialog工具类的实现(多种dialog的创建)
    转:setContentView的时候,到底发生了什么
    转:Handler一定要在主线程实例化吗?new Handler()和new Handler(Looper.getMainLooper())的区别
    转:Android Studio中的Gradle是干什么的
    转:Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB
    Android 学习
    com.baidu.navisdk.adapter找不到 在百度定位SDK的基础之上导入导航的SDK(针对新版本的坑!)
  • 原文地址:https://www.cnblogs.com/yjac/p/14342760.html
Copyright © 2020-2023  润新知