java记事本课程设计论文附源码
JAVA简单记事本程序(源代码)课程设计
辽宁工业大学JA V A程序设计课程设计(论文)题目: JAVA简单记事本程序院(系):软件学院专业班级:软件工程班学号:学生姓名:指导教师:教师职称:起止时间:程序设计专题(报告)任务及评语目录第1章课程设计的目的与要求 (4)1.1 课程设计目的 (4)1.2 课程设计的实验环境 (4)1.3 课程设计的预备知识 (4)1.4 课程设计要求 (4)第2章课程设计内容 (5)2.1课题描述 (5)2.2 系统设计 (5)2.2.1功能分析 (5)2.2.2面向对象设计 (5)2.2.3详细设计 (7)2.3程序实现 (10)2.3.1源码分析 (10)2.3.1运行结果 (14)第3章总结 (18)参考文献19第1章课程设计的目的与要求1.1 课程设计目的《JA V A程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。
实践教学环节是必不可少的一个重要环节。
本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JA V A程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。
1.2 课程设计的实验环境硬件要求能运行Windows 9.X操作系统的微机系统。
JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。
1.3 课程设计的预备知识熟悉JAVA语言及ECLIPSE开发工具。
1.4 课程设计要求按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。
要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JA V A程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。
java课程设计报告记事本
Java课程设计报告:记事本1. 引言记事本是一款常见的文本编辑工具,广泛应用于日常工作和学习中。
本文将介绍一种基于Java语言开发的简易记事本设计方案。
2. 设计思路2.1 界面设计记事本的界面应简洁明了,方便用户进行文本编辑和操作。
可以考虑使用Swing或JavaFX等图形库来创建用户界面。
2.1.1 主窗体记事本的主窗体应包含一个菜单栏和一个文本编辑区域。
菜单栏包含文件、编辑、格式等功能项,可以使用Java提供的菜单组件来实现。
2.1.2 文件操作在菜单栏的文件功能项中,应包含新建、打开、保存、另存为等操作。
这些功能可以通过文件选择对话框来实现。
2.1.3 文本编辑文本编辑区域应支持基本的编辑功能,如复制、粘贴、剪切和撤销等操作。
可以使用Java提供的文本框组件来实现。
2.2 功能设计记事本的功能设计应满足用户的基本需求,如文本编辑、保存和打开文件等。
2.2.1 文本编辑功能用户可以在文本编辑区域输入和编辑文本内容。
可以提供字体、颜色和对齐等格式设置功能。
2.2.2 文件操作功能用户可以通过菜单栏的文件功能项进行文件的新建、打开、保存和另存为等操作。
可以使用Java的文件IO功能来实现。
2.3 实现步骤2.3.1 创建主窗体首先,需要创建一个主窗体,并设置合适的大小和布局。
可以使用Swing或JavaFX提供的窗体组件来实现。
2.3.2 添加菜单栏在主窗体中添加一个菜单栏,并设置合适的菜单和菜单项。
可以使用Java提供的菜单和菜单项组件来实现。
2.3.3 添加文件操作功能在菜单栏的文件功能项中添加新建、打开、保存和另存为等功能,并实现相应的事件处理。
可以使用Java提供的文件选择对话框和文件IO功能来实现。
2.3.4 添加文本编辑功能在主窗体中添加一个文本编辑区域,并提供复制、粘贴、剪切和撤销等编辑功能。
可以使用Java提供的文本框组件和编辑功能来实现。
3. 实现代码以下是一个简单记事本的Java代码示例:import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.*;public class Notepad extends JFrame {private JTextArea textArea;private JFileChooser fileChooser;public Notepad() {setTitle("记事本");setSize(600, 400);setDefaultCloseOperation(EXIT_ON_CLOSE);createMenuBar();textArea = new JTextArea();JScrollPane scrollPane = new JScrollPane(textArea);add(scrollPane, BorderLayout.CENTER);fileChooser = new JFileChooser();setVisible(true);}private void createMenuBar() {JMenuBar menuBar = new JMenuBar();JMenu fileMenu = new JMenu("文件");JMenuItem newMenuItem = new JMenuItem("新建");JMenuItem openMenuItem = new JMenuItem("打开");JMenuItem saveMenuItem = new JMenuItem("保存");JMenuItem saveAsMenuItem = new JMenuItem("另存为");newMenuItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {textArea.setText("");}});openMenuItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {int result = fileChooser.showOpenDialog(Notepad.this);if (result == JFileChooser.APPROVE_OPTION) {File file = fileChooser.getSelectedFile();try {BufferedReader reader = new BufferedReader(new FileReader(file));String line;StringBuilder content = new StringBuilder();while ((line = reader.readLine()) != null) { content.append(line).append("\n");}reader.close();textArea.setText(content.toString());} catch (IOException ex) {ex.printStackTrace();}}}});saveMenuItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {int result = fileChooser.showSaveDialog(Notepad.this);if (result == JFileChooser.APPROVE_OPTION) {File file = fileChooser.getSelectedFile();try {BufferedWriter writer = new BufferedWriter(new FileWriter(file));writer.write(textArea.getText());writer.close();} catch (IOException ex) {ex.printStackTrace();}}}});saveAsMenuItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {int result = fileChooser.showSaveDialog(Notepad.this);if (result == JFileChooser.APPROVE_OPTION) {File file = fileChooser.getSelectedFile();try {BufferedWriter writer = new BufferedWriter(new FileWriter(file));writer.write(textArea.getText());writer.close();} catch (IOException ex) {ex.printStackTrace();}}}});fileMenu.add(newMenuItem);fileMenu.add(openMenuItem);fileMenu.add(saveMenuItem);fileMenu.add(saveAsMenuItem);menuBar.add(fileMenu);setJMenuBar(menuBar);}public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {@Overridepublic void run() {new Notepad();}});}}4. 总结本文介绍了一种基于Java语言开发的简易记事本设计方案。
java记事本课程设计论文附源码
java记事本课程设计论文附源码设计题目:记事本课程设计专业:电子信息科学及技术班级:电子1202班学号:20121210606姓名:王鹏2015 年7月XXX学院本科学生课程设计任务书摘要目前,很多新的技术领域都涉及到了Java语言,Java语言是面向对象编程,并涉及到网络、多线程等重要的基础知识,因此Java语言也是学习面向对象编程和网络编程的首选语言。
此次课程设计主要通过编写一个简单的记事本程序使我们深入理解并实践在本课程中所学的有关JAVA程序设计方面的语言基础、异常处理、事件处理、小应用程序以及图形用户界面设计等内容。
此简易记事本程序,使用Java程序编写,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,退出,复制,粘贴,剪切等功能。
该程序主要用到了Java swing和事件监听等。
关键词记事本程序,java语言,Java swing目录摘要 (1)1 需求分析 (4)1.1需求分析 (4)1.2功能设计 (4)2 概要分析 (5)2.1概要设计思想 (5)2.2程序运行界面 (5)2.3程序模块说明 (5)2.4流程图 (6)2.5程序相关说明 (7)3 程序详细设计及分析 (8)3.1构建菜单栏及其下拉菜单 (8)3.2“文件”菜单操作的事件监听 (9)3.3“编辑”、“格式”等菜单的事件监听 (11)3.4异常处理 (13)4 测试分析 (15)5 源程序清单 (18)结论 (30)参考文献 (31)1 需求分析1.1需求分析现在网络上各种文档编辑器数不胜数,有EmEditor ,UEStudio ,GridinSoft Notepad ,Notepad++,win32pad ,SkimEdit,UniRed, xint 。
功能也是应有尽有,有能改变字体的,有能改变文字颜色的。
但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。
JAVA课程设计记事本(含代码)
Java程序课程设计任务书一、主要任务与目标1.掌握java语言,能够学会使用JCreator开发具体的软件。
2.使用所学知识开发一个基于Java的记事本。
二、主要内容与基本要求本程序在执行后应能处理文本编辑的一些基本功能。
根据记事本的特点,程序主要功能设计有:打开文件,读取文件中的文本信息:对原有文件可实行打开操作,并能读取文件中的内容,以方便对文件的查看,修改等任务。
显示、编辑修改文本信息:记事本对文字信息的主要处理功能。
可对相关信息进行复制,剪切,粘贴等操作。
实现新建、保存文本文件:新建文本可以使用户写入新的信息,文件保存后再次打开仍可获得原有信息。
三、计划进度1.12月28日-- 12月28日:搜集资料、查阅文献,确定选题2.12月29日-- 12月30日:需求分析,系统设计,系统功能模块完善3.1月1日-- 1月3日:编程实现系统、系统测试与修改4.1月4日-- 1月5日:课程设计报告撰写5.1月6日-- 1月7日:课程设计报告答辩四、主要参考文献(1)洪维恩何嘉 java 2面向对象程序设计. 中国铁道出版社,2004.2(2)耿祥义张跃平 Java大学实用教程(第2版).电子工业出版社,2008.5(3)孙全党王吴迪赵枫朝 Java程序设计应用教程,电子工业出版社,2006.2摘要随时着科学技术的快速发展,计算机程序设计早已成为了趋势,JAV A是计算机专业的核心课程,是计算机科学的算法理论基础和软件设计的技术基础。
JA VA是实践性很强的课程。
课程设计是加强实践能力的一个强有力手段。
要求掌握JA V A的应用、编写、上机调试的基本方法。
本课程设计就是主要利用java 语言编写的一个模仿windows 记事本的较简单的程序,它能实现打开文件,读取文件中的文本信息;显示、编辑修改文本信息;实现新建、打开、保存文本文件以及控制保存文本信息到指定的文件的一些基本功能。
该记事本是一个基于JCreator的应用程序。
基于java的记事本程序课程设计成稿
1 问题描述设计一个具有GUI界面的记事本,含有简单的文字编辑功能,如:剪切、复制、粘贴、删除;还能实现保存、另存为、设置字体和颜色等功能。
这次课程设计由**、**和我三个人合作完成。
**主要负责3概要设计和5测试分析。
**4.1GUI程序界面设计,我负责4. 2JM4类的实现。
由于4.3事件处理和撰写程序关系密切,这两项都由**负责。
2 需求分析本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:(1)、菜单中有“文件”、“编辑”、“格式”、“帮助”四个主菜单;(2)、“文件”有“新建”、“打开”、“保存”、“另存为”、“退出”分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。
(3)、“编辑”有“剪切”、“复制”、“粘贴”三个子菜单:用于剪切文字,复制文字,粘贴文字,删除文字。
(4)、“格式”中,有“字体”、“颜色”两个子菜单:用于设置文字的字体而和颜色,字体有“宋体”、“楷体”、“黑体”颜色有“红”、“蓝”、“绿”。
(5)、“帮助”菜单中有“关于”的子菜单,用于描述记事本程序的相关信息。
(6)、还有弹出菜单也能实现“剪切”、“复制”、“粘贴”三个子菜单的功能。
3 概要设计3.1自定义类说明3.1.1 类名: JM(1)作用: 主类(2)继承的父类: JFrame类(3)成员变量说明:JMenuBar mb=new JMenuBar(); //定义一个菜单项/******定义各个菜单及其菜单项******/JMenu m1=new JMenu("文件(F)");JMenuItem n=new JMenuItem("新建");JMenuItem open=new JMenuItem("打开(O)... Ctrl+O"); JMenuItem save=new JMenuItem("保存(S)... Ctrl+S"); JMenuItem save_as=new JMenuItem("另存为(A)...Ctrl+A"); JMenuItem exit=new JMenuItem("退出");JMenu m2=new JMenu("编辑(E)");JMenuItem copy=new JMenuItem("复制(C) Ctrl+C"); JMenuItem cut=new JMenuItem("剪切(X) Ctrl+X"); JMenuItem paste=new JMenuItem("粘贴(P) Ctrl+P");JMenu m3=new JMenu("格式(O)");JMenu f1=new JMenu("字体(F)");JMenuItem i11=new JMenuItem("宋体");JMenuItem i12=new JMenuItem("楷体");JMenuItem i13=new JMenuItem("黑体");JMenu color=new JMenu("颜色(C)");JMenuItem i21=new JMenuItem("红");JMenuItem i22=new JMenuItem("蓝");JMenuItem i23=new JMenuItem("绿");JMenu m4=new JMenu("帮助(H)");JMenuItem about=new JMenuItem("关于");/*****定义弹出菜单及其菜单项*****/JPopupMenu pm=new JPopupMenu();JMenuItem item1=new JMenuItem("复制");JMenuItem item2=new JMenuItem("剪切");JMenuItem item3=new JMenuItem("粘贴");/***********编辑区**********/String s;Container c;JTextArea editor=new JTextArea(s);(4)主要方法说明:JM( )方法创建一个窗口并设置窗口的相应参数,以及把各个项目加到窗上private void addJMenuBar( )方法把各个菜单添加到菜单棒上private void addFileMenu( ) private void addEditMenu( ) private void addFormMenu( ) private void addHelpMenu( ) private void addJPopupMenu( )各个方法则把相应的菜单项添加到各自的“文件”、“编辑”、“格式”、“帮助”菜单上,及弹出菜单上3.1.2 类名: JM4(1)作用: 主类(2)继承的父类: JM类(3)主要成员方法说明:编辑区键盘事件:KeyListener类如果记事本的编辑区内用键盘输入了字符,就能够被程序监听;editor.addKeyListener( new KeyAdapter(){public void keyTyped(KeyEvent e){flag=1;}});窗口的事件监听:windowListener类;class windowListener extends WindowAdapter{public void windowClosing(WindowEvent e){if(flag==0)System.exit(0);else close();}}菜单项的事件监听:ActionListener类;public void actionPerformed(ActionEvent e){Font f2=editor.getFont();JMenuItem mi=(JMenuItem) e.getSource();……}3.2 程序流程图3.2.1主流程图3.2.5 弹出菜单操作流程图3.2.6 “帮助”菜单操作流程图4 详细设计4.1 GUI程序界面设计import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;public class JM extends JFrame{JMenuBar mb=new JMenuBar(); //定义一个菜单项/******定义各个菜单及其菜单项******/JMenu m1=new JMenu("文件(F)");JMenuItem n=new JMenuItem("新建");JMenuItem open=new JMenuItem("打开(O)... Ctrl+O"); JMenuItem save=new JMenuItem("保存(S)... Ctrl+S"); JMenuItem save_as=new JMenuItem("另存为(A)...Ctrl+A"); JMenuItem exit=new JMenuItem("退出");JMenu m2=new JMenu("编辑(E)");JMenuItem copy=new JMenuItem("复制(C) Ctrl+C"); JMenuItem cut=new JMenuItem("剪切(X) Ctrl+X"); JMenuItem paste=new JMenuItem("粘贴(P) Ctrl+P");JMenu m3=new JMenu("格式(O)");JMenu f1=new JMenu("字体(F)");JMenuItem i11=new JMenuItem("宋体"); JMenuItem i12=new JMenuItem("楷体"); JMenuItem i13=new JMenuItem("黑体");JMenu color=new JMenu("颜色(C)");JMenuItem i21=new JMenuItem("红");JMenuItem i22=new JMenuItem("蓝");JMenuItem i23=new JMenuItem("绿");JMenu m4=new JMenu("帮助(H)");JMenuItem about=new JMenuItem("关于");/*****定义弹出菜单及其菜单项*****/ JPopupMenu pm=new JPopupMenu();JMenuItem item1=new JMenuItem("复制"); JMenuItem item2=new JMenuItem("剪切"); JMenuItem item3=new JMenuItem("粘贴");/***********编辑区**********/String s;Container c;JTextArea editor=new JTextArea(s);Font t=new Font("sanserif",Font.PLAIN,12);JM(){super("记事本");setSize(500,400);try{UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelCla ssName());}catch(Exception e){System.err.println("不能设置外观的原因;"+e);}c = getContentPane();c.add(new JScrollPane(editor));addFileMenu();addEditMenu();addFormMenu();addHelpMenu();addJMenuBar();addJPopupMenu();setJMenuBar(mb);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}/******把菜单项加到菜单上******/private void addFileMenu(){m1.add(n);m1.add(open);m1.add(save);m1.add(save_as);m1.addSeparator();m1.add(exit);m1.setFont(t);}private void addEditMenu() {m2.add(copy);m2.add(cut);m2.addSeparator();m2.add(paste);m2.setFont(t);}private void addFormMenu() {m3.add(f1);m3.add(color);m3.setFont(t);f1.add(i11);f1.add(i12);f1.add(i13);color.add(i21);color.add(i22);color.add(i23);}private void addHelpMenu() {m4.add(about);m4.setFont(t);}private void addJMenuBar() {mb.add(m1);mb.add(m2);mb.add(m3);mb.add(m4);mb.setBackground(Color.cyan);}private void addJPopupMenu(){editor.add(pm);pm.add(item1);pm.add(item2);pm.add(item3);}public static void main(String arg[]){new JM();}}4.2 JM4类的实现import java.io.*;import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.awt.Font.*;public class JM4 extends JM implements ActionListener,MouseListener//EventListener{int flag=0;public JM4(){/**********监听器接口**********/n.addActionListener(this);open.addActionListener(this);save.addActionListener(this);save_as.addActionListener(this);exit.addActionListener(this);copy.addActionListener(this);cut.addActionListener(this);paste.addActionListener(this);i11.addActionListener(this);i12.addActionListener(this);i13.addActionListener(this);i21.addActionListener(this);i22.addActionListener(this);i23.addActionListener(this);about.addActionListener(this);item1.addActionListener(this);item2.addActionListener(this);item3.addActionListener(this);editor.addMouseListener(this);addWindowListener(new windowListener());4.3 事件处理4.3.1 编辑区键盘事件处理/***************编辑区键盘事件******************/ editor.addKeyListener( new KeyAdapter(){public void keyTyped(KeyEvent e){flag=1;}});}4.3.2 窗口事件处理/**************窗口监听器**************/class windowListener extends WindowAdapter{public void windowClosing(WindowEvent e) {if(flag==0)System.exit(0);else close();}}4.3.3 菜单项事件处理/***************菜单项监听器****************/ public void actionPerformed(ActionEvent e){Font f2=editor.getFont();JMenuItem mi=(JMenuItem) e.getSource();if(mi==n) //新建{if(flag==0) editor.setText("");else close2();}if(mi==open) //打开{loadFile();}if(mi==save||mi==save_as) //保存和另存为{saveFile();}if(mi==exit) //退出{if(flag==0)System.exit(0); close();}if(mi==copy) //复制{editor.copy();}if(mi==cut) //剪切{editor.cut();}if(mi==paste) //粘贴{editor.paste();}if(mi==i11) //字体设置{editor.setFont(new java.awt.Font("宋体",java.awt.Font.PLAIN,f2.getSize()));}if(mi==i12){editor.setFont(new java.awt.Font("楷体",java.awt.Font.PLAIN,f2.getSize()));}if(mi==i13){editor.setFont(new java.awt.Font("黑体",java.awt.Font.PLAIN,f2.getSize()));}if(mi==i21) //字体颜色{ editor.setForeground(Color.red); }if(mi==i22){editor.setForeground(Color.blue);}if(mi==i23){editor.setForeground(Color.green);}if(mi==about) //帮助菜单的关于{String message = "----记事本----"+ "由梁**指导,***、**、**共同完成\n感谢您的使用!"; JOptionPane.showMessageDialog(JM4.this, message, "关于...",JOptionPane.PLAIN_MESSAGE);}/******弹出菜单********/if(mi==item1) //复制{editor.copy();}if(mi==item2) //剪切{editor.cut();}if(mi==item3) //粘贴{editor.paste();}}4.3.4 编辑区的鼠标事件事件处理/******编辑区的鼠标事件*********/public void mouseReleased(MouseEvent e){if(e.isPopupTrigger())pm.show(editor,e.getX(),e.getY());}public void mouseClicked(MouseEvent e){}public void mouseEntered(MouseEvent e){}public void mouseExited(MouseEvent e){}public void mousePressed(MouseEvent e){}public static void main (String[] args) { JM4 d=new JM4();} }5 测试分析(1)程序运行界面如下:(2)“文件”菜单的菜单项:(3)“编辑”菜单的菜单项:(4)打开文件及另存文件时的界面:由于打开文件和另存文件都要寻找路径,所以开始时界面相同。
《Java》课程设计》记事本
《Java课程设计》记事本课程设计报告书目录一、设计课题二、设计目的三、操作环境四、设计场所(机房号、机器号或自己机器)五、设计过程(设计内容及主要程序模块)六、本次设计中用到的课程知识点(列出主要知识点)七、设计过程中遇到的问题及解决办法八、程序清单五、设计过程(设计内容及主要模块,不少于3000字)1.设计要求1)界面设计2)功能实现(1)文件菜单:新建、打开、保存、另存为、退出等。
(2)其中新建菜单项可以新建一个记事本程序;打开菜单项可以打开一个用户指定的文本文件,并将其内容显示在记事本的文本区域;保存和另存为菜单项可分别实现文件的保存和另存为3)编辑菜单:复制、剪切和粘贴等4)帮助菜单:软件版本信5)右键弹出快捷菜单2.总体设计1)功能模块图:图一功能模块图2)功能描述1、打开记事本。
首先是标准型的记事本,拥有文件、编辑。
格式和帮助。
如图1所示:图1标准型记事本界面2、在标准型的记事本界面中,进行的新建一个本件名字叫新记事本。
如图2记事本文件帮助新建打开保存另存为退出复制剪切粘贴编辑关于记事本右键快捷格式字体颜色图2新建记事本功能3、用打开文件打开刚刚新建的新记事本。
如图三所示。
图3—打开文件4、点击退出即可退出,如图4所示:图4—退出记事本5、点击帮助可以看到有关记事本的相关信息,其中有作者名、版本、许可条款、隐私声明等必要信息。
如图5所示:图5—帮助相关信息6、右键可实现复制、粘贴、剪切、清除等常用功能,方便用户可以快捷方便的使用记事本。
如图6所示:图6—右键功能7、编辑也可实现制、粘贴、剪切、清除等常用功能,方便用户选择自己适合的方式,自由选择方便的快捷方式使用。
如图7:图7—编辑八、程序清单package test;import java.io.File;import java.io.*;import java.awt.event.*;import java.awt.Toolkit;import java.awt.*;import javax.swing.*;import javax.swing.filechooser.*;public class Notebook extends JFrame implements ActionListener,ItemListener{ //组件创建JButton b_save,b_close; //按钮JTextArea textArea; //文本框File tempFile; //文件JPanel jp; //面板JMenu file,edit,style,help; //菜单JMenuItemf_new,f_open,f_save,f_close,f_saveas,e_copy, e_paste,e_cut,e_clear,e_selectAll,e_find,e_rep lace,s_font,s_color,h_editor,h_help; //菜单条JMenuBar jmb;JScrollPane jsp; //滚动面板JPopupMenu popUpMenu = new JPopupMenu(); //右键弹出式菜单JLabel stateBar;//标签JLabel jl,jj;JFileChooser jfc = new JFileChooser(); //文件选择JMenuItemje_copy,je_paste,je_cut,je_clear,je_selectAll,je _find,je_replace; //弹出式菜单条public Notebook(){jfc.addChoosableFileFilter(new FileNameExtensionFilter("文本文件(*.txt)","txt"));jmb = new JMenuBar();textArea = new JTextArea();jsp = new JScrollPane(textArea);file = new JMenu("文件");edit = new JMenu("编辑");style = new JMenu("格式");help = new JMenu("帮助");je_copy = new JMenuItem("复制(C) ");je_paste = new JMenuItem("粘贴(P) ");je_cut = new JMenuItem("剪切(X) ");je_clear = new JMenuItem("清除(D) ");je_selectAll = new JMenuItem("全选(A) ");je_find = new JMenuItem("查找(F) ");je_replace = new JMenuItem("替换(R) ");je_copy.addActionListener(this); //给弹窗式的各组件添加监听器je_paste.addActionListener(this);je_cut.addActionListener(this);je_clear.addActionListener(this);je_selectAll.addActionListener(this);je_find.addActionListener(this);je_replace.addActionListener(this);//给界面上方的菜单条添加监听器f_new = new JMenuItem("新建(N)");f_new.setAccelerator(KeyStroke.getKeyS troke('N',InputEvent.CTRL_MASK,false)); //设置带修饰符快捷键f_new.addActionListener(this);f_open = new JMenuItem("打开(O)");f_open.setAccelerator(KeyStroke.getKey Stroke('O',InputEvent.CTRL_MASK,false));f_open.addActionListener(this);f_save = new JMenuItem("保存(S)");f_save.setAccelerator(KeyStroke.getKey Stroke('S',InputEvent.CTRL_MASK,false));f_save.addActionListener(this);f_saveas = new JMenuItem("另存为");f_saveas.setAccelerator(KeyStroke.getKe yStroke(KeyEvent.VK_S,InputEvent.CTRL_ MASK|InputEvent.SHIFT_MASK));f_saveas.addActionListener(this);f_close = new JMenuItem("退出(W)");f_close.setAccelerator(KeyStroke.getKey Stroke('W',InputEvent.CTRL_MASK,false));f_close.addActionListener(this);e_copy = new JMenuItem("复制(C)");e_copy.setAccelerator(KeyStroke.getKey Stroke('C',InputEvent.CTRL_MASK,false));e_copy.addActionListener(this);e_paste = new JMenuItem("粘贴(V)");e_paste.setAccelerator(KeyStroke.getKeyStro ke('V',InputEvent.CTRL_MASK,false));e_paste.addActionListener(this);e_cut = new JMenuItem("剪切(X)"); e_cut.setAccelerator(KeyStroke.getKeyStroke ('X',InputEvent.CTRL_MASK,false));e_cut.addActionListener(this);e_clear = new JMenuItem("清除(D)");e_clear.setAccelerator(KeyStroke.getKeyStrok e('D',InputEvent.CTRL_MASK,false));e_clear.addActionListener(this);e_selectAll = new JMenuItem("全选(A)");e_selectAll.setAccelerator(KeyStroke.getKey Stroke('A',InputEvent.CTRL_MASK,false));e_selectAll.addActionListener(this);e_find = new JMenuItem("查找(F)");e_find.setAccelerator(KeyStroke.getKeyStrok e('F',InputEvent.CTRL_MASK,false));e_copy.addActionListener(this);e_replace = new JMenuItem("替换(R)");e_replace.setAccelerator(KeyStroke.getK eyStroke('R',InputEvent.CTRL_MASK,false)) ;e_replace.addActionListener(this);s_font = new JMenuItem("字体(T)");s_font.setAccelerator(KeyStroke.getKeyStrok e('T',InputEvent.CTRL_MASK,false));s_font.addActionListener(this);s_color = new JMenuItem("颜色(C)...");s_color.setAccelerator(KeyStroke.getKeyStro ke(KeyEvent.VK_C,InputEvent.CTRL_MAS K | InputEvent.SHIFT_MASK));s_color.addActionListener(this);h_editor = new JMenuItem("关于记事本");h_editor.setAccelerator(KeyStroke.getKeyStro ke(KeyEvent.VK_E,InputEvent.CTRL_MAS K));h_editor.addActionListener(this);h_help = new JMenuItem("帮助信息(H)");h_help.setAccelerator(KeyStroke.getKeyStrok e(KeyEvent.VK_I,InputEvent.CTRL_MASK) );h_help.addActionListener(this);//添加右键弹出式菜单popUpMenu.add(je_copy);popUpMenu.add(je_paste);popUpMenu.add(je_cut);popUpMenu.add(je_clear);popUpMenu.addSeparator();popUpMenu.add(je_selectAll);popUpMenu.add(je_find);popUpMenu.add(je_replace);//编辑区鼠标事件,点击右键弹出"编辑"菜单textArea.addMouseListener(new MouseAdapter(){public void mouseReleased(MouseEvent e) {if(e.getButton() == MouseEvent.BUTTON3)popUpMenu.show(e.getComponent(), e.getX(), e.getY());} //e.getComponent()和textArea具有同等效果public void mouseClicked(MouseEvent e){if(e.getButton() == MouseEvent.BUTTON1)popUpMenu.setVisible(false);}});this.setJMenuBar(jmb);this.setTitle("记事本程序");file.add(f_new); //添加文件菜单组件file.add(f_open);file.addSeparator(); //加分隔线file.add(f_save);file.add(f_saveas);file.addSeparator();file.add(f_close);edit.add(e_copy); //添加编辑菜单组件edit.add(e_paste);edit.add(e_cut);edit.add(e_clear);edit.addSeparator();edit.add(e_selectAll);edit.add(e_find);edit.add(e_replace);style.addSeparator();style.add(s_font);style.add(s_color);jmb.add(file); //添加格式菜单组件jmb.add(edit);jmb.add(style);jmb.add(help);help.add(h_editor); //添加帮助菜单组件help.add(h_help);//textArea.setWrapStyleWord(true); //设置在单词过长的时候是否要把长单词移到下一行。
java编写的记事本源代码
import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.text.*;import javax.swing.event.*;public class IJMFrame extends JFrame {Document document = null;JTextArea textArea = new JTextArea();JScrollPane scrollPane = new JScrollPane(textArea); EditController controller;//------ 定义菜单变量------//JMenuBar menuBar = new JMenuBar();JMenu menuFile = new JMenu("文件");JMenu menuEdit = new JMenu("编辑");JMenu menuFormat = new JMenu("格式"); JPopupMenu memuPopup = new JPopupMenu(); JMenuItem itemNew = new JMenuItem("新建"); JMenuItem itemOpen = new JMenuItem("打开"); JMenuItem itemSave = new JMenuItem("保存"); JMenuItem itemSaveAs = new JMenuItem("另存"); JMenuItem itemExit = new JMenuItem("退出"); JMenuItem itemUndo = new JMenuItem("撤消"); JMenuItem itemCut = new JMenuItem("剪切"); JMenuItem itemCopy = new JMenuItem("复制"); JMenuItem itemPaste = new JMenuItem("粘贴"); JMenuItem itemDelete = new JMenuItem("删除"); JMenuItem itemFind = new JMenuItem("查找"); JMenuItem itemReplace = new JMenuItem("替换"); JMenuItem itemSelectAll = new JMenuItem("全选"); JMenuItem itemFont = new JMenuItem("字体");//------------定义右键菜单------------------------// JMenuItem popupMenu_Undo=new JMenuItem("撤销"); JMenuItem popupMenu_Cut=new JMenuItem("剪切"); JMenuItem popupMenu_Copy=new JMenuItem("复制"); JMenuItem popupMenu_Paste=new JMenuItem("粘贴"); JMenuItem popupMenu_Delete=new JMenuItem("删除"); JMenuItem popupMenu_SelectAll=new JMenuItem("全选");public IJMFrame() {super("记事本");setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setJMenuBar(menuBar);//创建新的菜单栏getContentPane().add(scrollPane);document = textArea.getDocument();textArea.setLineWrap(true);// 默认为换行textArea.setWrapStyleWord(true);//-- 设置菜单--//itemUndo.setEnabled(false);menuBar.add(menuFile);menuBar.add(menuEdit);menuBar.add(menuFormat);menuFile.add(itemNew);menuFile.add(itemOpen);menuFile.add(itemSave);menuFile.add(itemSaveAs);menuFile.addSeparator();menuFile.add(itemExit);menuEdit.add(itemUndo);menuEdit.addSeparator();menuEdit.add(itemCut);menuEdit.add(itemCopy);menuEdit.add(itemPaste);menuEdit.add(itemDelete);menuEdit.addSeparator();menuEdit.add(itemFind);menuEdit.add(itemReplace);menuEdit.add(itemSelectAll);menuFormat.add(itemFont);popupMenu_Undo.setEnabled(false); // 撤消选项初始设为不可用memuPopup.add(popupMenu_Undo);memuPopup.addSeparator();memuPopup.add(popupMenu_Cut);memuPopup.add(popupMenu_Copy);memuPopup.add(popupMenu_Paste);memuPopup.add(popupMenu_Delete);memuPopup.addSeparator();memuPopup.add(popupMenu_SelectAll);//-- 增加菜单的侦听者--//controller = new EditController(this);itemNew.addActionListener(controller);itemOpen.addActionListener(controller);itemSave.addActionListener(controller);itemSaveAs.addActionListener(controller);itemExit.addActionListener(controller);itemUndo.addActionListener(controller);itemCut.addActionListener(controller);itemCopy.addActionListener(controller);itemPaste.addActionListener(controller);itemDelete.addActionListener(controller);itemFind.addActionListener(controller);itemReplace.addActionListener(controller);itemSelectAll.addActionListener(controller);itemFont.addActionListener(controller);popupMenu_Undo.addActionListener(controller);popupMenu_Cut.addActionListener(controller);popupMenu_Copy.addActionListener(controller);popupMenu_Paste.addActionListener(controller);popupMenu_Delete.addActionListener(controller);popupMenu_SelectAll.addActionListener(controller);document.addDocumentListener(controller);document.addUndoableEditListener(controller);addWindowListener(controller);MouseAdapter mAdapter=new MouseAdapter(){public void mousePressed(MouseEvent e) {checkForTriggerEvent(e);}public void mouseReleased(MouseEvent e) {checkForTriggerEvent(e);}private void checkForTriggerEvent(MouseEvent e) {if (e.isPopupTrigger())memuPopup.show(e.getComponent(), e.getX(), e.getY());// 在组件调用者的坐标空间中的位置// X、Y// 显示弹出菜单。
JAVA课程设计---设计一个记事本
课程设计(大作业)报告课程名称:面向对象程序设计设计题目:设计一个记事本院系:信息技术学院课程设计(大作业)任务书课程设计(大作业)报告一、需求分析如今有关记事本的软件种类繁多。
功能也是应有尽有,但是,软件并不是十全十美的:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。
仅从日常应用方面来说,实现输入、保存、编辑等简单实用的功能就够了。
本程序的设计就是依照这样一种需要设计了一个简单的记事本程序。
本程序要构建的记事本程序参照了Windows操作系统的记事本工具,具体其功能有以下几个方面:(1)菜单中有“文件”,“编辑”,“关于”三个主菜单。
(2)“文件”有“新建”“打开”“保存”“退出”四个子菜单:分别用于新建文件,打开文件,保存文件,退出记事本。
(3)“编辑”中有“剪切”“复制”“粘贴”“颜色”三个字菜单:用于剪切文字,复制文字,粘贴文字。
增加了“颜色”子菜单来对文字的颜色进行设置。
(4)“关于”菜单中有关于记事本程序的制作日期,作者等信息。
二、系统总体设计在本程序中,设计了一个菜单栏和文本内容区。
设计过程中用到了JScrollPane,JMenu,JTextPane,JFileChooser等。
JMenu用来制作菜单,菜单包括“文件”“编辑”“关于”。
JTextPane主要用来输入文本。
为了加入颜色的设置,所以加了一个JColorChooser组件。
1.系统功能结构图设计2.系统文件结构图设计3.系统编辑结构图设计UML图:三、软件平台1、使用JDK配置环境在JAVA编辑器下进行编辑JAVA源程序2、EditPlus 3四、模块的分析与实现构建菜单以及下拉菜单:JMenu[] menus=new JMenu[]{new JMenu("文件"),new JMenu("编辑"),new JMenu("关于")};J MenuItem optionofmenu[][]=new JMenuItem[][]{{new JMenuItem("新建"),new JMenuItem("打开"),new JMenuItem("保存"),new JMenuItem("退出")},{new JMenuItem("复制"),new JMenuItem("剪切"),new JMenuItem("粘贴"),new JMenuItem("颜色")},{new JMenuItem("关于")}};文件菜单事件监听: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);编辑菜单的事件监听: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);异常处理:void saving(){try{FileWriter Writef=new FileWriter(file);Writef.write(content.getText());Writef.close();}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("11级计算机1班"));about.getContentPane().add(new JLabel("制作者:彭磊"));about.getContentPane().add(new JLabel("2012年12月27日"));about.setModal(true);about.setSize(200,100);about.setLocation(250,150);}五、调试分析各部分调试功能如图所示:六、总结在完成记事本合格程序中,基本上实现了我在需求分析时所预期的功能。
Java课程设计报告(记事本)
Java课程设计报告专业:班级:姓名:学号:系部:目录目录 (2)正文 (3)一、设计内容和要求 (3)二、设计思路 (4)三、具体实现 ............................................................ 错误!未定义书签。
四、运行调试与分析 .............................................. 错误!未定义书签。
3五、设计体会小结 (21)正文一、设计内容和要求Java文档编辑器是一个允许修改DefaultStyledDocument对象的应用程序。
这些对象用于管理Swing文本组件(例如JTextPane和JTextArea)的内容。
JTextPane用于显示DefaultStyledDocument的内容。
通过改变与DefaultStyledDocument相关联的Style对象,能够改变DefaultStyledDocument在JTextPane中的显示方式。
此应用程序也能够将DefaultStyledDocument存储到磁盘上和读入以前存储的DefaultStyledDocument。
读、写、操纵DefaultStyledDocument的所有选项都可以通过使用菜单项来实现。
当这些菜单项被选中时,它们生成事件。
使用ActionListener, ItemListener, UndoableEditListener和MenuDragMouseListener对象来处理这些事件。
要求通过课程设计,使学生将掌握的Java语言基本知识应用于实践中,在实际练习中加深对Java语言各方面的知识和概念的理解,掌Java程序设计中编程方法、编程思想,深入理解Java语言在实际中的应用。
要求学生动手上机编程,掌握Java程序设计思想和设计方法,设计实现一个简单Java文档编辑器,该编辑器由打开文件、新建文件、保存、复制、剪切、粘贴、撤销、删除等基本文本操作功能组件组成,有能力和时间的同学还可以设计实现如查找、时间、设置字体颜色、格式等功能,右键菜单响应,快捷键等功能,进一步加强自己的编程能力和编程思想。
Java记事本源代码(完整)
/*** 作品:记事本* 作者:**** 功能:简单的文字编辑*/import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.*;import javax.swing.event.ChangeEvent;import javax.swing.event.ChangeListener;class NotePad extends JFrame{private JMenuBar menuBar;private JMenu fielMenu,editMenu,formMenu,aboutMenu;private JMenuItemnewMenuItem,openMenuItem,saveMenuItem,exitMenuItem;private JMenuItemcutMenuItem,copyMenuItem,pasteMenuItem,foundItem,replaceItem,s electAll;private JMenuItem font,about;private JTextArea textArea;private JFrame foundFrame,replaceFrame;private JCheckBoxMenuItem wrapline;private JTextField textField1=new JTextField(15);private JTextField textField2=new JTextField(15);private JButton startButton,replaceButton,reallButton;int start=0;String value;File file=null;JFileChooser fileChooser=new JFileChooser();boolean wrap=false;public NotePad(){//创建文本域textArea=new JTextArea();add(new JScrollPane(textArea),BorderLayout.CENTER);//创建文件菜单及文件菜单项fielMenu=new JMenu("文件");fielMenu.setFont(new Font("微软雅黑",0,15));newMenuItem=new JMenuItem("新建",newImageIcon("icons\\new24.gif"));newMenuItem.setFont(new Font("微软雅黑",Font.BOLD,13));newMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent. VK_N,InputEvent.CTRL_MASK));newMenuItem.addActionListener(listener);openMenuItem=new JMenuItem("打开",newImageIcon("icons\\open24.gif"));openMenuItem.setFont(new Font("微软雅黑",Font.BOLD,13));openMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent .VK_O,InputEvent.CTRL_MASK));openMenuItem.addActionListener(listener);saveMenuItem=new JMenuItem("保存",newImageIcon("icons\\save.gif"));saveMenuItem.setFont(new Font("微软雅黑",Font.BOLD,13));saveMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent .VK_S,InputEvent.CTRL_MASK));saveMenuItem.addActionListener(listener);exitMenuItem=new JMenuItem("退出",newImageIcon("icons\\exit24.gif"));exitMenuItem.setFont(new Font("微软雅黑",Font.BOLD,13));exitMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent .VK_E,InputEvent.CTRL_MASK));exitMenuItem.addActionListener(listener);//创建编辑菜单及菜单项editMenu=new JMenu("编辑");editMenu.setFont(new Font("微软雅黑",0,15));cutMenuItem=new JMenuItem("剪切",newImageIcon("icons\\cut24.gif"));cutMenuItem.setFont(new Font("微软雅黑",Font.BOLD,13));cutMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent. VK_X,InputEvent.CTRL_MASK));cutMenuItem.addActionListener(listener);copyMenuItem=new JMenuItem("复制",newImageIcon("icons\\copy24.gif"));copyMenuItem.setFont(new Font("微软雅黑",Font.BOLD,13));copyMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent .VK_C,InputEvent.CTRL_MASK));copyMenuItem.addActionListener(listener);pasteMenuItem=new JMenuItem("粘贴",newImageIcon("icons\\paste24.gif"));pasteMenuItem.setFont(new Font("微软雅黑",Font.BOLD,13));pasteMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEven t.VK_V,InputEvent.CTRL_MASK));pasteMenuItem.addActionListener(listener);foundItem=new JMenuItem("查找");foundItem.setFont(new Font("微软雅黑",Font.BOLD,13));foundItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK _F,InputEvent.CTRL_MASK));foundItem.addActionListener(listener);replaceItem=new JMenuItem("替换");replaceItem.setFont(new Font("微软雅黑",Font.BOLD,13));replaceItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent. VK_R,InputEvent.CTRL_MASK));replaceItem.addActionListener(listener);selectAll=new JMenuItem("全选");selectAll.setFont(new Font("微软雅黑",Font.BOLD,13));selectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK _A,InputEvent.CTRL_MASK));selectAll.addActionListener(listener);//创建格式菜单及菜单项formMenu=new JMenu("格式");formMenu.setFont(new Font("微软雅黑",0,15));wrapline=new JCheckBoxMenuItem("自动换行");wrapline.setFont(new Font("微软雅黑",Font.BOLD,13));wrapline.addActionListener(listener);wrapline.addChangeListener(new ChangeListener() {public void stateChanged(ChangeEvent e) {if(wrapline.isSelected()){textArea.setLineWrap(true);}elsetextArea.setLineWrap(false);}});font=new JMenuItem("字体");font.setFont(new Font("微软雅黑",Font.BOLD,13)); font.addActionListener(listener);//创建关于菜单aboutMenu=new JMenu("关于");aboutMenu.setFont(new Font("微软雅黑",0,15)); about=new JMenuItem("记事本……");about.setFont(new Font("微软雅黑",Font.BOLD,13)); about.addActionListener(listener);//添加文件菜单项fielMenu.add(newMenuItem);fielMenu.add(openMenuItem);fielMenu.add(saveMenuItem);fielMenu.addSeparator();fielMenu.add(exitMenuItem);//添加编辑菜单项editMenu.add(cutMenuItem);editMenu.add(copyMenuItem);editMenu.add(pasteMenuItem);editMenu.add(foundItem);editMenu.add(replaceItem);editMenu.addSeparator();editMenu.add(selectAll);//添加格式菜单项formMenu.add(wrapline);formMenu.add(font);//添加关于菜单项aboutMenu.add(about);//添加菜单menuBar=new JMenuBar();menuBar.add(fielMenu);menuBar.add(editMenu);menuBar.add(formMenu);menuBar.add(aboutMenu);setJMenuBar(menuBar);//创建两个框架,用作查找和替换foundFrame=new JFrame();replaceFrame=new JFrame();//创建两个文本框textField1=new JTextField(15);textField2=new JTextField(15);startButton=new JButton("开始");startButton.addActionListener(listener);replaceButton=new JButton("替换为");replaceButton.addActionListener(listener);reallButton=new JButton("全部替换");reallButton.addActionListener(listener);}//创建菜单项事件监听器ActionListener listener=new ActionListener() {public void actionPerformed(ActionEvent e) {String name=e.getActionCommand();if(e.getSource() instanceof JMenuItem){if("新建".equals(name)){textArea.setText("");file=null;}if("打开".equals(name)){if(file!=null){fileChooser.setSelectedFile(file);}intreturnVal=fileChooser.showOpenDialog(NotePad.this);if(returnVal==JFileChooser.APPROVE_OPTION){file=fileChooser.getSelectedFile();}try{FileReader reader=new FileReader(file);int len=(int)file.length();char[] array=new char[len];reader.read(array,0,len);reader.close();textArea.setText(new String(array));}catch(Exception e_open){e_open.printStackTrace();}}}if("保存".equals(name)){if(file!=null){fileChooser.setSelectedFile(file);}intreturnVal=fileChooser.showSaveDialog(NotePad.this);if(returnVal==JFileChooser.APPROVE_OPTION){file=fileChooser.getSelectedFile();}try{FileWriter writer=new FileWriter(file);writer.write(textArea.getText());writer.close();}catch (Exception e_save) {e_save.getStackTrace();}}if("退出".equals(name)){System.exit(0);}if("剪切".equals(name)){textArea.cut();}if("复制".equals(name)){textArea.copy();}if("粘贴".equals(name)){textArea.paste();}if("查找".equals(name)){value=textArea.getText();foundFrame.add(textField1,BorderLayout.CENTER);foundFrame.add(startButton,BorderLayout.SOUTH);foundFrame.setLocation(300,300);foundFrame.setTitle("查找");foundFrame.pack();foundFrame.setVisible(true);foundFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE );}if("替换".equals(name)){value=textArea.getText();JLabel label1=new JLabel("查找内容:");JLabel label2=new JLabel("替换为:");JPanel panel1=new JPanel();panel1.setLayout(new GridLayout(2,2));JPanel panel2=new JPanel();panel2.setLayout(new GridLayout(1,3));replaceFrame.add(panel1,BorderLayout.NORTH);replaceFrame.add(panel2,BorderLayout.CENTER);panel1.add(label1);panel1.add(textField1);panel1.add(label2);panel1.add(textField2);panel2.add(startButton);panel2.add(replaceButton);panel2.add(reallButton);replaceFrame.setTitle("替换");replaceFrame.setLocation(300,300);replaceFrame.pack();replaceFrame.setVisible(true);replaceFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLO SE);}if("开始".equals(name)||"下一个".equals(name)){String temp=textField1.getText();int s=value.indexOf(temp,start);if(value.indexOf(temp,start)!=-1){textArea.setSelectionStart(s);textArea.setSelectionEnd(s+temp.length());textArea.setSelectedTextColor(Color.GREEN);start=s+1;startButton.setText("下一个");}else {JOptionPane.showMessageDialog(foundFrame, "查找完毕!", "提示", 0,new ImageIcon("icons\\search.gif"));foundFrame.dispose();}}if("替换为".equals(name)){String temp=textField1.getText();int s=value.indexOf(temp,start);if(value.indexOf(temp,start)!=-1){textArea.setSelectionStart(s);textArea.setSelectionEnd(s+temp.length());textArea.setSelectedTextColor(Color.GREEN);start=s+1;textArea.replaceSelection(textField2.getText());}else {JOptionPane.showMessageDialog(foundFrame, "查找完毕!", "提示", 0,new ImageIcon("icons\\search.gif"));foundFrame.dispose();}}if("全部替换".equals(name)){String temp=textArea.getText();temp=temp.replaceAll(textField1.getText(),textField2.getTex t());textArea.setText(temp);}if("全选".equals(name)){textArea.selectAll();}if("字体".equals(name)){FontDialog fontDialog=newFontDialog(NotePad.this);fontDialog.setVisible(true);if(textArea.getFont()!=fontDialog.getFont()){textArea.setFont(fontDialog.getFont());}}if("记事本……".equals(name)){AboutDialog aboutDialog=newAboutDialog(NotePad.this);aboutDialog.setVisible(true);}}};//创建字体设置对话面板,并添加相应事件监听器class FontDialog extends JDialog implements ItemListener, ActionListener, WindowListener{public JCheckBox Bold=new JCheckBox("Bold",false);public JCheckBox Italic=new JCheckBox("Italic",false);public List Size,Name;public int FontName;public int FontStyle;public int FontSize;public JButton OK=new JButton("OK");public JButton Cancel=new JButton("Cancel");public JTextArea Text=new JTextArea("字体预览文本域\n0123456789\nAaBbCcXxYyZz");public FontDialog(JFrame owner) {super(owner,"字体设置",true);GraphicsEnvironmentg=GraphicsEnvironment.getLocalGraphicsEnvironment();String name[]=g.getAvailableFontFamilyNames();Name=new List();Size=new List();FontName=0;FontStyle=0;FontSize=8;int i=0;Name.add("Default Value");for(i=0;i<name.length;i++)Name.add(name[i]);for(i=8;i<257;i++)Size.add(String.valueOf(i));this.setLayout(null);this.setBounds(250,200,480, 306);this.setResizable(false);OK.setFocusable(false);Cancel.setFocusable(false);Bold.setFocusable(false);Italic.setFocusable(false);Name.setFocusable(false);Size.setFocusable(false);Name.setBounds(10, 10, 212, 259);this.add(Name);Bold.setBounds(314, 10, 64, 22);this.add(Bold);Italic.setBounds(388, 10, 64, 22);this.add(Italic);Size.setBounds(232, 10, 64, 259);this.add(Size);Text.setBounds(306, 40, 157, 157);this.add(Text);OK.setBounds(306, 243, 74, 26);this.add(OK);Cancel.setBounds(390, 243, 74, 26);this.add(Cancel);Name.select(FontName);Size.select(FontSize);Text.setFont(getFont());Name.addItemListener(this);Size.addItemListener(this);Bold.addItemListener(this);Italic.addItemListener(this);OK.addActionListener(this);Cancel.addActionListener(this);this.addWindowListener(this);}public void itemStateChanged(ItemEvent e) {Text.setFont(getFont());}public void actionPerformed(ActionEvent e) {if(e.getSource()==OK){FontName=Name.getSelectedIndex();FontStyle=getStyle();FontSize=Size.getSelectedIndex();this.setVisible(false);}else cancel();}public void windowClosing(WindowEvent e) {cancel();}public Font getFont(){if(Name.getSelectedIndex()==0) return new Font("新宋体",getStyle(),Size.getSelectedIndex()+8);else return newFont(Name.getSelectedItem(),getStyle(),Size.getSelectedIndex() +8);}public void cancel(){Name.select(FontName);Size.select(FontSize);setStyle();Text.setFont(getFont());this.setVisible(false);}public void setStyle(){if(FontStyle==0 || FontStyle==2)Bold.setSelected(false);else Bold.setSelected(true);if(FontStyle==0 || FontStyle==1)Italic.setSelected(false);else Italic.setSelected(true);}public int getStyle(){int bold=0,italic=0;if(Bold.isSelected()) bold=1;if(Italic.isSelected()) italic=1;return bold+italic*2;}public void windowActivated(WindowEvent arg0) {}public void windowClosed(WindowEvent arg0) {}public void windowDeactivated(WindowEvent arg0) {}public void windowDeiconified(WindowEvent arg0) {}public void windowIconified(WindowEvent arg0) {}public void windowOpened(WindowEvent arg0) {} }//创建关于对话框class AboutDialog extends JDialog implements ActionListener{ public JButton OK,Icon;public JLabel Name,Version,Author,Java;public JPanel Panel;AboutDialog(JFrame owner) {super(owner,"关于",true);OK=new JButton("OK");Icon=new JButton(new ImageIcon("icons\\edit.gif"));Name=new JLabel("Notepad");Version=new JLabel("Version 1.0");Java=new JLabel("JRE Version 6.0");Author=new JLabel("Copyright (c) 11-5-2012 By Jianmin Chen");Panel=new JPanel();Color c=new Color(0,95,191);Name.setForeground(c);Version.setForeground(c);Java.setForeground(c);Author.setForeground(c);Panel.setBackground(Color.white);OK.setFocusable(false);this.setBounds(250,200,280, 180);this.setResizable(false);this.setLayout(null);Panel.setLayout(null);OK.addActionListener(this);Icon.setFocusable(false);Icon.setBorderPainted(false);Author.setFont(new Font(null,Font.PLAIN,11));Panel.add(Icon);Panel.add(Name);Panel.add(Version);Panel.add(Author);Panel.add(Java);this.add(Panel);this.add(OK);Panel.setBounds(0, 0, 280, 100);OK.setBounds(180, 114, 72, 26);Name.setBounds(80, 10, 160, 20);Version.setBounds(80, 27, 160, 20);Author.setBounds(15, 70, 250, 20);Java.setBounds(80, 44, 160, 20);Icon.setBounds(16, 14, 48, 48);}public void actionPerformed(ActionEvent e) { this.setVisible(false);}}}//创建记事本public class ChenJianmin {public static void main(String[] args){EventQueue.invokeLater(new Runnable() {public void run() {NotePad notePad=new NotePad();notePad.setTitle("记事本");notePad.setVisible(true);notePad.setBounds(100,100,800,600);notePad.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}});}}。
java记事本课程设计源代码-JNotePadUI
import java.awt.BorderLayout;import java.awt.Container;import java.awt.Font;import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import javax.swing.BorderFactory; import javax.swing.JFileChooser; import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane; import javax.swing.JPopupMenu; import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.KeyStroke;import javax.swing.ScrollPaneConstants; import javax.swing.SwingConstants;public class JNotePadUI extends JFrame { private JMenuItem menuOpen;private JMenuItem menuSave;private JMenuItem menuSaveAs;private JMenuItem menuClose;private JMenu editMenu;private JMenuItem menuCut;private JMenuItem menuCopy;private JMenuItem menuPaste;private JMenuItem menuAbout;private JTextArea textArea;private JLabel stateBar;private JFileChooser fileChooser;private JPopupMenu popUpMenu;public JNotePadUI() {super("新建文本文件");setUpUIComponent();setUpEventListener();setVisible(true);}private void setUpUIComponent() {setSize(640, 480);// 菜单栏JMenuBar menuBar = new JMenuBar();// 设置「文件」菜单JMenu fileMenu = new JMenu("文件");menuOpen = new JMenuItem("打开");// 快捷键设置menuOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));menuSave = new JMenuItem("保存");menuSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));menuSaveAs = new JMenuItem("另存为");menuClose = new JMenuItem("关闭");menuClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,InputEvent.CTRL_MASK));fileMenu.add(menuOpen);fileMenu.addSeparator(); // 分隔线fileMenu.add(menuSave);fileMenu.add(menuSaveAs);fileMenu.addSeparator(); // 分隔线fileMenu.add(menuClose);// 设置「编辑」菜单JMenu editMenu = new JMenu("编辑");menuCut = new JMenuItem("剪切");menuCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK)); menuCopy = new JMenuItem("复制");menuCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK)); menuPaste = new JMenuItem("粘贴");menuPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK)); editMenu.add(menuCut);editMenu.add(menuCopy);editMenu.add(menuPaste);// 设置「关于」菜单JMenu aboutMenu = new JMenu("关于");menuAbout = new JMenuItem("关于JNotePad"); aboutMenu.add(menuAbout);menuBar.add(fileMenu);menuBar.add(editMenu);menuBar.add(aboutMenu);setJMenuBar(menuBar);// 文字编辑区域textArea = new JTextArea();textArea.setFont(new Font("宋体", Font.PLAIN, 16)); textArea.setLineWrap(true);JScrollPane panel = new JScrollPane(textArea, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);Container contentPane = getContentPane();contentPane.add(panel, BorderLayout.CENTER);// 状态栏stateBar = new JLabel("未修改");stateBar.setHorizontalAlignment(SwingConstants.LEFT);stateBar.setBorder(BorderFactory.createEtchedBorder());contentPane.add(stateBar, BorderLayout.SOUTH);popUpMenu = editMenu.getPopupMenu();fileChooser = new JFileChooser();}private void setUpEventListener() {// 按下窗口关闭钮事件处理addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {closeFile();}});// 菜单- 打开menuOpen.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {openFile();}});// 菜单- 保存menuSave.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {saveFile();}});// 菜单- 另存为menuSaveAs.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {saveFileAs();}});// 菜单- 关闭文件menuClose.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {closeFile();}});// 菜单- 剪切menuCut.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {cut();}});// 菜单- 复制menuCopy.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {copy();}});// 菜单- 粘贴menuPaste.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {paste();}});// 菜单- 关于menuAbout.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {// 显示对话框JOptionPane.showOptionDialog(null, null,"程序名称:\n JNotePad \n" +"程序设计:\n \n" +"简介:\n 一个简单的文字编辑器\n",JOptionPane.DEFAULT_OPTION,RMATION_MESSAGE,null, null, null);}});// 编辑区键盘事件textArea.addKeyListener(new KeyAdapter() {public void keyTyped(KeyEvent e) {processTextArea();}});// 编辑区鼠标事件textArea.addMouseListener(new MouseAdapter() {public void mouseReleased(MouseEvent e) {if(e.getButton() == MouseEvent.BUTTON3)popUpMenu.show(editMenu, e.getX(), e.getY());}public void mouseClicked(MouseEvent e) {if(e.getButton() == MouseEvent.BUTTON1)popUpMenu.setVisible(false);}});}private void openFile() {if(isCurrentFileSaved()) { // 文件是否为保存状态open(); // 打开}else {// 显示对话框int option = JOptionPane.showConfirmDialog(null, "文件已修改,是否保存?","保存文件?", JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE, null);switch(option) {// 确认文件保存case JOptionPane.YES_OPTION:saveFile(); // 保存文件break;// 放弃文件保存case JOptionPane.NO_OPTION:open();break;}}}private boolean isCurrentFileSaved() {if(stateBar.getText().equals("未修改")) {return false;}else {return true;}}private void open() {// fileChooser 是JFileChooser 的实例// 显示文件选取的对话框int option = fileChooser.showDialog(null, null);// 使用者按下确认键if(option == JFileChooser.APPROVE_OPTION) {try {// 开启选取的文件BufferedReader buf =new BufferedReader(new FileReader(fileChooser.getSelectedFile()));// 设定文件标题setTitle(fileChooser.getSelectedFile().toString());// 清除前一次文件textArea.setText("");// 设定状态栏stateBar.setText("未修改");// 取得系统相依的换行字符String lineSeparator = System.getProperty("line.separator");// 读取文件并附加至文字编辑区String text;while((text = buf.readLine()) != null) {textArea.append(text);textArea.append(lineSeparator);}buf.close();}catch(IOException e) {JOptionPane.showMessageDialog(null, e.toString(),"开启文件失败", JOptionPane.ERROR_MESSAGE);}}}private void saveFile() {// 从标题栏取得文件名称File file = new File(getTitle());// 若指定的文件不存在if(!file.exists()) {// 执行另存为saveFileAs();}else {try {// 开启指定的文件BufferedWriter buf =new BufferedWriter(new FileWriter(file));// 将文字编辑区的文字写入文件buf.write(textArea.getText());buf.close();// 设定状态栏为未修改stateBar.setText("未修改");}catch(IOException e) {JOptionPane.showMessageDialog(null, e.toString(),"写入文件失败", JOptionPane.ERROR_MESSAGE);}}}private void saveFileAs() {// 显示文件对话框int option = fileChooser.showSaveDialog(null);// 如果确认选取文件if(option == JFileChooser.APPROVE_OPTION) {// 取得选择的文件File file = fileChooser.getSelectedFile();// 在标题栏上设定文件名称setTitle(file.toString());try {// 建立文件file.createNewFile();// 进行文件保存saveFile();}catch(IOException e) {JOptionPane.showMessageDialog(null, e.toString(),"无法建立新文件", JOptionPane.ERROR_MESSAGE);}}}private void closeFile() {// 是否已保存文件if(isCurrentFileSaved()) {// 释放窗口资源,而后关闭程序dispose();}else {int option = JOptionPane.showConfirmDialog(null, "文件已修改,是否保存?","保存文件?", JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE, null);switch(option) {case JOptionPane.YES_OPTION:saveFile();break;case JOptionPane.NO_OPTION:dispose();}}}private void cut() {textArea.cut();stateBar.setText("已修改");popUpMenu.setVisible(false);}private void copy() {textArea.copy();popUpMenu.setVisible(false);}private void paste() {textArea.paste();stateBar.setText("已修改");popUpMenu.setVisible(false);}private void processTextArea() {stateBar.setText("已修改");}public static void main(String[] args) {new JNotePadUI();}}。
java记事本课程设计论文附源码解析
设计题目:记事本课程设计专业:电子信息科学与技术班级:电子1202班学号:20121210606姓名:王鹏2015 年7月XXX学院本科学生课程设计任务书摘要目前,很多新的技术领域都涉及到了Java语言,Java语言是面向对象编程,并涉及到网络、多线程等重要的基础知识,因此Java语言也是学习面向对象编程和网络编程的首选语言。
此次课程设计主要通过编写一个简单的记事本程序使我们深入理解并实践在本课程中所学的有关JAVA程序设计方面的语言基础、异常处理、事件处理、小应用程序以及图形用户界面设计等内容。
此简易记事本程序,使用Java程序编写,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,退出,复制,粘贴,剪切等功能。
该程序主要用到了Java swing和事件监听等。
关键词记事本程序,java语言,Java swing目录摘要 (1)1 需求分析 (3)1.1需求分析 (3)1.2功能设计 (3)2 概要分析 (4)2.1概要设计思想 (4)2.2程序运行界面 (4)2.3程序模块说明 (5)2.4流程图 (6)2.5程序相关说明 (7)3 程序详细设计与分析 (8)3.1构建菜单栏及其下拉菜单 (8)3.2“文件”菜单操作的事件监听 (8)3.3“编辑”、“格式”等菜单的事件监听 (10)3.4异常处理 (11)4 测试分析 (12)5 源程序清单 (15)结论 (22)参考文献 (23)1 需求分析1.1需求分析现在网络上各种文档编辑器数不胜数,有EmEditor ,UEStudio ,GridinSoft Notepad ,Notepad++,win32pad ,SkimEdit,UniRed, xint 。
功能也是应有尽有,有能改变字体的,有能改变文字颜色的。
但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。
仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。
Java课程设计报告记事本源代码有流程图
Java课程设计报告记事本源代码有流程图Java课程设计报告题目:简单记事本程序的设计年级专业:计算机科学与技术学号:学生姓名:指导老师:完成时间:2010年 6月 8 日第 1 页共 11 页目录摘要 ..................................................................... . (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(源程序清单 ..................................................................... ................. 错误~未定义书签。
JAVA记事本程序论文
象添加到菜单栏以构造菜单。
JCheckBoxMenuItem
// 可 以 被 选 定 或 取 消 选 定 的 菜
单项。如果被选定,菜单项的旁边通常会出现一个复选标记。如果未被选
定或被取消选定,菜单项的旁边就没有复选标记
JtextArea
//JTextArea 是一个显示纯文
本的多行区域。
JLabel
1.2 功能设计
本程序要构建的记事本程序参照了 Windows 操作系统的记事本工具, 其功能有以下几个方面:
⑴菜单中有“文件”,“编辑”,“格式”,“查看”,“帮助”五 个主菜单。
⑵“文件”有“新建”,“打于”,“保存”,“另存为”,“页面 设置”“退出”,五个子菜单。
⑶“编辑”中有“撤销”,“剪切”,“复制”,“粘贴”,“删除”, “查找”,“查找替换”,“转到”,“全选”,“时间日期”,用于对 文档的编辑。
import java.util.*;
// 包 含 集 合 框 架 、 遗 留 的
collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字 符串标记生成器、随机数生成器和位数组)。
import java.io.*;
//通过数据流、序列化和文
7
件系统提供系统输入和输出。
import javax.swing.*;
II
第 1 章概要设计
1.1 需求分析
现在网络上各种文档编辑器数不胜数,有 EmEditor,UEStudio,GridinSoftNotepad,Notepad++,win32pad,SkimEdit,UniR ed,xint。功能也是应有尽有,有能改变字体的,有能改变文字颜色的。但 是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文 字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。仅从日 常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。本程 序设计就是依照这样一种使用需要设计了一个简单的记事本程序。
JAVA课程设计 编写一个记事本程序
Java语言程序设计B报告班级:学号:姓名:成绩:2012年12月题目:编写一个记事本程序一.课程设计题目概要。
1.1课程设计目的1.2题目设计要求二.课程设计思路。
三.课程设计实现功能结构图。
3.1“文件”菜单。
3.2“编辑”菜单。
四.记事本实现功能代码实现。
4.1界面设计代码实现及实现截图。
4.2功能代码详细设计4.2.1新建文件4.2.2打开文件4.2.3复制文件4.2.4粘贴文件4.2.5退出记事本五.JAVA课程设计个人总结。
附:JAVA课程设计程序源代码一.课程设计题目概要。
1.1课程设计目的。
按照老师要求,编写一个记事本程序,并可以实现老师要求的相关功能。
在课程设计过程中,复习巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握,将课本上的理论知识和实际有机的结合起来,锻炼自己的分析解决实际问题的能力,提高自己实践编程的能力。
1.2题目设计要求。
要求:用图形用户界面实现。
能实现编辑、保存、另存为、查找替换等功能。
提示:使用文件输入输出流。
二.课程设计思路。
设计两个类,一个记事本的类(JSB),具有程序的要求和功能再创建一个课设的主类(KESHE),在主类中创建一个JSB类的对象,就可以直接在编译器中运行程序。
在主界面中设计一个Frame容器,并在其中加入一个下拉菜单和一个文本域控件,把该容器设置为GridLayout(1,1)布局。
三.课程设计实现功能结构图。
3.1“文件”菜单。
3.2“编辑”菜单。
四.记事本实现功能代码实现。
4.1.界面设计。
主要代码:f=new Frame(s);p1=new TextArea("");f.setSize(400,600);f.setBackground(Color.white);f.setVisible(true);menubar=new MenuBar();menu1=new Menu("文件");menu2=new Menu("编辑");item1=new MenuItem("新建");item2=new MenuItem("打开");item3=new MenuItem("保存");item4=new MenuItem("另存为");item5=new MenuItem("退出");item6=new MenuItem("全选");item7=new MenuItem("复制");item8=new MenuItem("剪切");item9=new MenuItem("粘贴"); menu1.add(item1);menu1.add(item2);menu1.add(item4); menu1.add(item5); menu2.add(item6); menu2.add(item7); menu2.add(item8); menu2.add(item9); menubar.add(menu1); menubar.add(menu2);f.setMenuBar(menubar);程序代码实现截图:4.2功能代码详细设计。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设计题目:记事本课程设计专业:电子信息科学与技术班级:电子1202班学号:****************2015 年7月XXX学院本科学生课程设计任务书摘要目前,很多新的技术领域都涉及到了Java语言,Java语言是面向对象编程,并涉及到网络、多线程等重要的基础知识,因此Java语言也是学习面向对象编程和网络编程的首选语言。
此次课程设计主要通过编写一个简单的记事本程序使我们深入理解并实践在本课程中所学的有关JAVA程序设计方面的语言基础、异常处理、事件处理、小应用程序以及图形用户界面设计等内容。
此简易记事本程序,使用Java程序编写,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,退出,复制,粘贴,剪切等功能。
该程序主要用到了Java swing和事件监听等。
关键词记事本程序,java语言,Java swing目录摘要 (1)1 需求分析 (3)1.1需求分析 (3)1.2功能设计 (3)2 概要分析 (4)2.1概要设计思想 (4)2.2程序运行界面 (4)2.3程序模块说明 (4)2.4流程图 (5)2.5程序相关说明 (6)3 程序详细设计与分析 (8)3.1构建菜单栏及其下拉菜单 (8)3.2“文件”菜单操作的事件监听 (8)3.3“编辑”、“格式”等菜单的事件监听 (10)3.4异常处理 (11)4 测试分析 (12)5 源程序清单 (15)结论 (22)参考文献 (23)1 需求分析1.1需求分析现在网络上各种文档编辑器数不胜数,有EmEditor ,UEStudio ,GridinSoft Notepad ,Notepad++,win32pad ,SkimEdit,UniRed, xint 。
功能也是应有尽有,有能改变字体的,有能改变文字颜色的。
但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。
仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。
本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。
1.2功能设计本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:1、菜单中有“文件”,“编辑”,“格式”,“查看”,“帮助”五个主菜单。
2、“文件”有“新建”“打开”“保存”“另存为”“退出”五个子菜单:分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。
3、“编辑”中有“撤销”“剪切”“复制”“粘贴”“全选”“时间/日期”六个字菜单:用于撤销操作,剪切文字,复制文字,粘贴文字。
全部选择,插入日期、时间。
4、“格式”菜单中有“自动换行”和“字体”两个子菜单。
5、“查看”菜单只是显示状态栏。
6、“帮助”菜单中只有“关于记事本”子菜单,主要用于显示该程序的名字,版本等信息。
2 概要分析2.1概要设计思想在本程序中,设计了一个菜单栏和文本内容区。
设计过程中用到了JMenu,JMenuItem等。
JMenu用来制作菜单,菜单包括“文件”“编辑”“格式”“查看”“帮助”。
JMenuItem主要用来制作主菜单下面的子菜单。
2.2程序运行界面图2.1 记事本程序运行界面2.3程序模块说明ActionListenerimplementsNotepad图2.2 类Notepad模块图2.3 程序详细模块2.4流程图图2.4 程序流程图2.5程序相关说明整个记事本分为2快:菜单栏和内容输入区。
本程序中首先定义一个Notepad 类继承JFrame作为最底层容器。
(1)、text为程序文本输入区。
(2)、Menu为菜单栏。
(3)、要想记事本完成需求分析中相应的功能,还必须添加事件监听器。
事件监听器不仅要添加在菜单栏和内容输入区,还需加在容器中。
本程序中Listen 和Listen1实现了ActionListener接口,用来监听并处理所有菜单项和内容输入区为事件源的事件。
3 程序详细设计与分析3.1构建菜单栏及其下拉菜单JMenu files=new JMenu("文件(F)");JMenu edit=new JMenu("编辑(E)");JMenu formats=new JMenu("格式(O)");JMenu scan=new JMenu("查看(V)");JMenu help=new JMenu("帮助(H)");JMenuItem newFile=new JMenuItem("新建(N)");JMenuItem open=new JMenuItem("打开(O)...");JMenuItem save=new JMenuItem("保存(S)");JMenuItem saveAs=new JMenuItem("另存为(A)...");JMenuItem exit=new JMenuItem("退出(X)");JMenuItem undo=new JMenuItem("撤销(U)");JMenuItem cut=new JMenuItem("剪切(T)");JMenuItem copy=new JMenuItem("复制(C)");JMenuItem paste=new JMenuItem("粘贴(P)");JMenuItem selectAll=new JMenuItem("全选(A)");JMenuItem timeDate=new JMenuItem("时间/日期(D)");JCheckBoxMenuItem lineWrap=new JCheckBoxMenuItem("自动换行(M)");JMenuItem fonts=new JMenuItem("字体...");JMenuItem status=new JMenuItem("状态栏");JMenuItem about=new JMenuItem("关于记事本(A)");3.2“文件”菜单操作的事件监听class Listen1 implements ActionListener{//实现用于对文件进行操作的事件侦听器public void actionPerformed(ActionEvent e){Object source=e.getSource();//打开文件事件if(source==open){FileDialog openFile=new FileDialog(th,"打开文件...",FileDialog.LOAD);openFile.setVisible(true);StringfilePath=openFile.getDirectory()+openFile.getFile();try{FileInputStream fis=newFileInputStream(filePath);byte [] content=new byte[fis.available()];fis.read(content);text.setText(new String(content));text.setCaretPosition(0);if(openFile.getFile()!=null){th.setTitle(openFile.getFile()+name);openedPath=filePath;opened=true;}fis.close();}catch(Exception ex){ex.printStackTrace();}opened=true;}//保存及另存为事件else if(source==save||source==saveAs){String savePath=openedPath;if(savePath==null||source==saveAs){FileDialog saveFile=new FileDialog(th,"保存文件...",FileDialog.SAVE);saveFile.setVisible(true);savePath=saveFile.getDirectory()+saveFile.getFile();}try{FileOutputStream fos=newFileOutputStream(savePath);fos.write(text.getText().getBytes());fos.close();}catch(Exception ex){ex.printStackTrace();}if(source==save)openedPath=savePath;}}}3.3“编辑”、“格式”等菜单的事件监听class Listen implements ActionListener{//实现用于一般操作的事件侦听器public void actionPerformed(ActionEvent e){Object source=e.getSource();if(source==newFile){text.setText("");th.setTitle(name);openedPath=null;opened=false;}else if(source==exit)System.exit(0);else if(source==selectAll)text.selectAll();else if(source==cut)text.cut();else if(source==copy)text.copy();else if(source==paste)text.paste();else if(source==lineWrap)text.setLineWrap(!text.getLineWrap());else if(source==about){String message="java 记事本\n版本 0.01\n版权所有2013 pzhjsj\n\n本产品符合最终用户许可协议,授权给:\npzhjsj\n";JOptionPane.showMessageDialog(th,message,"关于记事本",JOptionPane.PLAIN_MESSAGE);}else if(source==timeDate){Date nowTime=new Date();SimpleDateFormat times=new SimpleDateFormat("HH:mm yyyy-MM-dd");text.insert(times.format(nowTime),text.getCaretPosition());}}}3.4异常处理在运行程序代码是有可能会产生异常情况或异常事件,为了避免这种情况,就需要在程序中用到Java异常处理机制。