Java课程设计报告-记事本源代码有流程图

Java课程设计报告

题 目:简单记事本程序的设计
年级专业:计算机科学与技术  软件工程
学 号:
学生姓名:
指导老师:


目    录

摘要… 1

前言… 2

1需求分析… 2

1.1需求分析… 2

1.2功能设计… 3

2.概要设计… 3

2.1程序设计思路… 3

2.2程序运行界面… 3

2.3模块说明图… 4

2.4程序流程图… 5

2.5程序相关说明… 6

3.程序详细设计与分析… 6

3.1.初始化组件… 6

3.2.构建菜单栏及其下拉菜单… 6

3.3.“文件”菜单的事件监听… 7

3.4.“编辑”菜单的事件监听… 8

3.5.异常处理… 9

4.测试分析… 10

5.源程序清单… 12

6.课程设计总结… 17

参考文献… 17

程序代码:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
class mynotepad extends JFrame{
    File file=null;
   	Color color=Color.red;
   	mynotepad(){
        initTextContent();
   	initMenu();
   	initAboutDialog();
   	        }
   	void initTextContent(){
   		getContentPane().add(new JScrollPane(content));
   		}
       JTextPane content=new JTextPane(); 
      JFileChooser openfile=new JFileChooser();
      JColorChooser opencolor=new JColorChooser();
      JDialog about=new JDialog(this);
      JMenuBar menu=new JMenuBar();
   	
 JMenu[] menus=new JMenu[]{
  new JMenu("文件"),
  new JMenu("编辑"),
  new JMenu("关于")
 };
 
 JMenuItem optionofmenu[][]=new JMenuItem[][]{{
  new JMenuItem("新建"),
  new JMenuItem("打开"),
  new JMenuItem("保存"),
  new JMenuItem("退出")
           },		         
   {
          
  new JMenuItem("复制"),         
  new JMenuItem("剪切"),
  new JMenuItem("粘贴"),
  new JMenuItem("颜色")
               },
               {
               new JMenuItem("关于")
               }
        };
      void initMenu(){
      	
      	  for(int i=0;i<menus.length;i++){
      	  	menu.add(menus[i]);
      	  	for(int j=0;j<optionofmenu[i].length;j++){
      	  		menus[i].add(optionofmenu[i][j]);
      	  		optionofmenu[i][j].addActionListener( action );
      	  	}
      	  }
      	  this.setJMenuBar(menu);
      } 
     ActionListener action=new ActionListener(){                   
     public void actionPerformed(ActionEvent e){
     	String name = e.getActionCommand();
  JMenuItem MI=(JMenuItem)e.getSource();
  if("新建".equals(name)){
   content.setText("");
   file=null;
  }else if("打开".equals(name)){
                    if(file !=null)openfile.setSelectedFile(file);
                    int returnVal=openfile.showOpenDialog(mynotepad.this);
                    if(returnVal==JFileChooser.APPROVE_OPTION){

                    file=openfile.getSelectedFile();
                    unfold();
                              }

      }else if("保存".equals(name)){
       if(file!=null) openfile.setSelectedFile(file);
          int returnVal=openfile.showSaveDialog(mynotepad.this);
                if(returnVal==JFileChooser.APPROVE_OPTION){
                file=openfile.getSelectedFile();
                  saving();
                                  }
           
             }else if("退出".equals(name)){
               mynotepad f=new mynotepad();
               int s=JOptionPane.showConfirmDialog(f,"退出?","退出",JOptionPane.YES_NO_OPTION);
               if(s==JOptionPane.YES_OPTION)
                System.exit(0);
             }else if("剪切".equals(name)){
               content.cut();
             }else if("复制".equals(name)){
               content.copy();
             }else if("粘贴".equals(name)){
               content.paste();
             }else if("颜色".equals(name)){
               color=JColorChooser.showDialog(mynotepad.this,"",color);
                 content.setForeground(color); 
                 
    }else if("关于".equals(name)){
              about.setSize(300,150);
              about.show();
     }    
   }  
  }; 

  void saving(){
       try{
        FileWriter Writef=new FileWriter(file);
        Writef.write(content.getText());
        Writef.close();
         }
    catch(Exception e){e.printStackTrace();}
                  }                
    void unfold(){
         try{
              FileReader Readf=new FileReader(file);
              int len=(int)file.length();
              char []buffer=new char[len];
              Readf.read(buffer,0,len);
              Readf.close();
              content.setText(new String(buffer));
              }catch(Exception e){e.printStackTrace();}
       }
    void initAboutDialog(){
      about.setLayout(new GridLayout(3,1));
      about.getContentPane().setBackground(Color.white);
      about.getContentPane().add(new JLabel("我的记事本程序"));
      about.getContentPane().add(new JLabel("制作者:liuhui"));
      about.getContentPane().add(new JLabel("2010年6月"));
      about.setModal(true);
      about.setSize(100,100);
      about.setLocation(250,170);
       }
  ;
   }   
     public class Notepad{
 public static void main(String args[]){		 
                mynotepad noted=new mynotepad();                
              noted.addWindowListener(new WindowAdapter(){
                  });
                       noted.setTitle("我的记事本程序");
                 noted.setSize(640,320);
                 noted.show();
                 noted.setLocation(150,100);
 }
  }

Java课程设计报告-记事本源代码有流程图下载

125jz网原创文章。发布者:江山如画,转载请注明出处:http://www.125jz.com/3782.html

(0)
上一篇 2019年10月4日 上午10:46
下一篇 2019年10月4日 下午8:58

99%的人还看了以下文章

  • python turtle绘画0基础练习

    一、题目:导入turtle包(import turtle),绘制边长为100的正方形。 要求: 1、新建一个“turtle2.py”文件 2、编写程序。 3、调试程序。 4、排除错误。 二、导入turtle包(import turtle),绘制半径为40的圆(circle)。 三、题目:导入turtle包(import turtle),绘制边长为60的等边三…

    2023年6月15日
    3810
  • 输入python显示不是内部命令的原因及解决方法

    问题原因:没有将python的安装路径添加到环境变量中。 解决方法: 首先在桌面上右键点击“此电脑”,选择“属性”,弹出系统界面选择“高级系统设置”,进入系统属性界面后在“高级”选项中选中“环境变量”。 然后在“系统变量”中找到变量Path,双击Path变量进入编辑界面。 接着在编辑环境变量对话框中点击“新建”,添加Python的安装路径,之后一直点确定即可…

    2023年5月18日 编程开发
    4301
  • 手机上可以python编程吗,手机如何开发python

    想在手机上编写python代码? python语言应用很广泛,很多小伙伴想利用空闲时间学习Python,但是有时候身边没有电脑,今天就给大家分享两种手机编写运行python的方法,让你可以直接在自己的手机上做python开发学习。 一、直接在线编写运行(免安装) 手机通过浏览器打开 https://c.runoob.com/compile/9/ 推荐:★★★…

    2022年3月16日 编程开发
    4.2K0
  • Java GUI编程高级实例一:给应用程序添加菜单

    一、给GUI应用程序添加菜单 菜单的作用:给应用程序设置操作菜单。 菜单组成 JMenuItem—菜单项,直接指向一个具体的操作 JMenu—菜单,其中可加入菜单项(JMenuItem)和菜单(Jmenu) JMenuBar—-菜单栏,在其中可以加入菜单(JMenu) 菜单的创建 JMenu、JMenuBar和JMenuI…

    2020年1月22日
    3.6K0
  • python 递归函数使用示例,求两个整数的最大公约数(欧几里得算法)

    用于计算两个整数的最大公约数的递归算法称为欧几里得算法,其计算原理依赖于定理: 两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。 公式为:gcd(a,b)=gcd(b, a mod b) 递归函数使用示例, def gcd(a, b): if b == 0: return a else: return gcd(b, a % b) prin…

    2020年1月31日
    5.9K0
  • 单元测试步骤、单元测试策略,单元测试快速入门教程三

    工作性质不同决定了工作侧重点也不同,因此程序开发人员在单元测试过程中关注更多的是程序代码本身和已经实现的功能。因此,站在他们的角度看,单元测试的过程就是在编写测试方法之前: 首先考虑如何对方法进行测试; 然后编写测试代码; 下一步就是运行某个测试,或者同时运行该单元的所有测试,确保所有测试都通过。 下图从宏观的角度概括了单元测试的工作过程图。 1.单元测试进…

    2018年4月18日
    3.5K0

发表回复

登录后才能评论