Xxx学校JAVA程序设计课程设计报告课题: 记事本姓名:学号:同组姓名:专业班级:指导教师:设计时间目录一、系统描述 (3)二、分析与设计 (4)1. 分析 (4)2. 功能模块划分 (4)3. 功能模块流程图 (5)4. 各模块的关键代码 (5)三、系统测试 (7)四、心得体会 (10)五、参考文献 (10)六、附录 (11)一、系统描述Java的前身是Oak,它一开始只是被应用于消费性电子产品中。
后来它的开发者们发现它还可以被用于更大范围的Internet上。
1995年,Java语言的名字从Oak编程了Java。
1997年J2SE1.1发布。
1998年J2SE1.2发布,标志Java2的诞生。
十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。
Java的体系结构由Java语言、Java class、Java API、Java虚拟机组成。
它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。
Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。
Java的平台标准有Java ME,Java SE和Java EE。
Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。
目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。
其中Java Development Kit 简称JDK是大多开发工具的基础。
以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。
在本程序设计中,因为需要开发的是记事本程序,规模较小,内容较少,所以选择了适合初学者使用的eclipse开发工具。
二、分析与设计1. 分析现在网络上各种文档编辑器数不胜数,有EmEditor ,UEStudio ,GridinSoft Notepad ,Notepad++,win32pad ,SkimEdit,UniRed, xint 。
功能也是应有尽有,有能改变字体的,有能改变文字颜色的。
但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。
仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。
本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。
2. 功能模块划分程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:第一部分菜单栏(1)菜单中有“文件”,“编辑”,“设置”,“关于”四个主菜单。
(2)“文件”有“打开”“保存”“退出”三个子菜单:分别用于打开文件,保存文件,退出记事本。
(3)“编辑”中有“撤销”,“恢复”,“剪切”“复制”“粘贴”“剪贴”,“删除”六个子菜单:用于剪切文字,复制文字,粘贴文字等一系列操作。
(4)“设置”中有“自动换行”,“字体颜色”,“恢复设置”三个子菜单,分别用于设置是否自动换行,字体颜色等。
(5)“关于”菜单中有关于记事本程序的制作日期,作者等信息第二部分文本输入区用到了“JTextArea”,给用户输入文字.第三部分状态栏此栏主要功能是显示出字符总长、总行数、当前行、当前列。
第四部分右键菜单此部分为用户设计右键操作,方便用户进行一系列的编辑操作,增强本记事本的用户体验性能。
3. 功能模块流程图4. 各模块的关键代码1构造函数创建窗口界面主菜单,子菜单,并未每个子菜单添加监听器 public Note(){jf=new JFrame("无标题-记事本");jf.setSize(850,550);jf.setLocation(100, 100);mb=new JMenuBar();mb.setBackground(new Color(236,233,216));jf.setJMenuBar(mb);addMenu();addTextArea();addStatusBar();addPopupMenu();jf.setVisible(true);jf.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {Handler h=new Handler();h.windowExit();// super.windowClosing(e);}});}2 添加右键菜单并为其添加监听器private void addPopupMenu() { //右键菜单final PopupMenu jpm=new PopupMenu();jpm.setFont(new Font("宋体",0,12));for(int i=0;i<jpm_name.length;i++){MenuItem jpim=new MenuItem(jpm_name[i]);jpm.add(jpim);jpim.addActionListener(new PopupAction()); //创建右键监听}jf.add(jpm);ta.addMouseListener(new MouseAdapter(){public void mouseClicked(MouseEvent e){if(e.getButton()==MouseEvent.BUTTON3){jpm.show(ta,e.getX(), e.getY()); //设置显示区域}}});}3 两个事件处理类,分别是 Handler.java、PopupAction.java三、系统测试 1打开程序2 点击主菜单3输入文字下方有显示状态栏4 点击子菜单------关于- ------打开-------退出------设置字体颜色5 右键菜单四、心得体会此次课程设计有我们寝室一起共同合作完成,花费的时间整整两天。
在这期间我们共同协作,互帮互助取得了很好的效率,也为我们构建和谐寝室,学习气氛良好寝室做出了一定的贡献。
在这期间我领略到了团队协作的重要性,也看到了团队合作的高效率性。
还有通过这次试验我学习到了其他室友的一些学习方法,比如追查API,如何在短时间内学习一个自己不懂的东西那就是利用好所有的搜索引擎。
总之此次课程设计不仅在知识少我是长了见识,在生活上我也长了见识。
五、参考文献a.黄晓东等编著 Java课程设计案例精编(第二版)[M].北京:中国水利水电出版社,2007b.李兴华等编著 Java开发实战经典Java开发实战经典北京:清华大学出版社,2009C.李尊朝苏军 Java程序设计(第二版) 图形用户界面设计、Swing组件中国铁道出版社,2007六、附录public class Note{private JMenu jmenu;private JMenuBar mb;private JMenuItem jmi;private static JTextArea ta;private static JFrame jf;private static UndoManager um;private static JLabel jl1;private static JLabel jl2;private static JToolBar jb;private String[] menu_name=new String[] //菜单{"文件","编辑","设置","关于"};private String[][] menu_item=new String[][]{ //子菜单{"打开","保存","退出"},{"撤销","恢复","复制","粘贴","剪切","删除"},{"自动换行","字体颜色","恢复默认"},{"关于记事本"}};private String jpm_name[]={ //右键菜单"撤销","恢复","复制","粘贴","剪切","删除"};public Note(){jf=new JFrame("无标题-记事本");jf.setSize(850,550);jf.setLocation(100, 100);mb=new JMenuBar();mb.setBackground(new Color(236,233,216));jf.setJMenuBar(mb);addMenu(); //添加菜单addTextArea(); //添加文本输入区addStatusBar(); //添加状态栏addPopupMenu(); //添加右键菜单jf.setVisible(true);jf.addWindowListener(new WindowAdapter() { //监听关闭窗口动作public void windowClosing(WindowEvent e) {Handler h=new Handler();h.windowExit();// super.windowClosing(e);}});}private void addPopupMenu() { //右键菜单final PopupMenu jpm=new PopupMenu();jpm.setFont(new Font("宋体",0,12));for(int i=0;i<jpm_name.length;i++){MenuItem jpim=new MenuItem(jpm_name[i]);jpm.add(jpim);jpim.addActionListener(new PopupAction()); //创建右键监听}jf.add(jpm);ta.addMouseListener(new MouseAdapter(){public void mouseClicked(MouseEvent e){if(e.getButton()==MouseEvent.BUTTON3){jpm.show(ta,e.getX(), e.getY()); //设置显示区域}}});}private void addTextArea() {ta=new JTextArea();ta.addMouseListener(new MouseHandler());ta.addKeyListener(new MouseHandler() );um=new UndoManager();ta.getDocument().addUndoableEditListener(um);JScrollPane scroll = new JScrollPane(ta);scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEED ED); //自动出现水平动条scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); //自动出现竖滚动条jf.getContentPane().add(scroll,BorderLayout.CENTER);}private void addMenu() {for(int i=0;i<menu_name.length;i++){jmenu=new JMenu(menu_name[i]);jmenu.setFont(new Font("宋体",0,12));for(int j=0;j<menu_item[i].length;j++){jmi=new JMenuItem(menu_item[i][j]);jmi.setFont(new Font("宋体",0,12));jmi.addActionListener(new Handler());jmenu.add(jmi);}mb.add(jmenu);}}private void addStatusBar() {jb=new JToolBar();jb.setBackground(new Color(236,233,216));jl1=new JLabel("字符总长:"+0 + " 总行数:"+1+" ");jl1.setFont(new Font("宋体",0,12));jb.add(jl1);JSeparator s = new JSeparator(); //设置分隔符s.setOrientation(SwingConstants.VERTICAL);jb.add(s);jl2=new JLabel("当前行:"+1+ " 当前列:"+0+" ");jl2.setFont(new Font("宋体",0,12));jb.add(jl2);jb.setFloatable(false);jf.getContentPane().add(jb,BorderLayout.SOUTH);}public static void main(String[] args) {SetFont();new Note();}public static JToolBar getJb() {return jb;}public static JFrame getJFrame() {return jf;}public static JLabel getLabel1() {return jl1;}public static JLabel getLabel2() {return jl2;}static UndoManager getUM(){return um;}static JTextArea getTextArea() {return ta;}源代码见我的那个记事本源代码文档。