佛山科学技术学院《可视化编程技术》课程设计报告记事本软件设计学生姓名:***学号:**********年级专业:12级教育技术学指导老师:***学院:教育科学学院广东★佛山提交日期:2014年6月目录1. 前言 (2)2.概要设计 (3)2.1 开发环境 (3)2.2 记事本功能 (3)2.3 界面设计 (3)3. 详细设计 (4)3.1 使用的JAVA类的说明 (4)3.2 类的主要方法 (5)3.2.1 输入后的文件保存 (5)3.2.2 打开文件,显示文件对话框 (6)3.2.3 文件的修改 (6)3.2.4 设计总体认识 (7)3.2.5 程序流程图 (8)4. 运行结果 (8)5. 测试分析 (9)5.1 程序运行情况 (9)5.2 测试的各个结果 (9)6. 源程序 (9)参考文献 (27)设计总结 (27)摘要:这是一个界面简单的java记事本,界面友好,能快捷简单地进行操作,可即时记录身边的事,可把它当做标签使用,充分用到日常生活工作中的记事,方便、简洁。
可进行文件的打开、保存、另存为和关闭;可进行简单的复制、粘贴、剪切。
这是一个简单的文字编辑器,日常生活的大小琐事记录上面,工作行程安排,可当做笔记本使用。
方便各国语言使用;界面为纯白色。
关键字:java记事本,记事本类,界面,方法,事件1 前言随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。
文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的记事本,可以实现简单的文字记事编辑功能,满足日常基本的生活需要和记事需要。
Java是由Sun公司开发的新一代纯面向对象的网络编程语言。
其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。
正因为如此,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。
Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。
Java基本版本叫Java 2标准版(Java 2 Standard Edition,J2SE),它包含建立Java应用程序或者是Applet所需的应用程序编程接口(API)。
Java 2移动版(The Java 2 Mobile Edition,J2ME)包含创建无线Java应用程序的API。
还有Java 2企业版(The Java 2 Enterprise,J2EE)是J2SE的增强版本,包含建立多层架构应用程序API。
Java语言是由C++语言发展起而来的,是一种彻底的面向对象的程序设计语言。
作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。
Java 语言去掉了C++语言的一些容易引起错误的特性。
Java语言的特点有:面向对象、跨平台、安全性、多线程和图形功能强。
2 概要设计2.1开发环境开发平台:Microsoft Windows XP Professional Service Pack 2开发工具:JBuilder 2007 + JDK 1.6.0_022.2记事本功能功能1:有最基本的文字编辑功能,。
功能2:菜单中有新建、保存、另存为和关闭的功能。
功能3:编辑中可以进行复制、剪切、粘贴。
功能4:关于记事本的介绍。
2.3界面设计图1 记事本面板3详细设计3.1记事本使用的Java类的说明类名: JNotePadUI作用: 实现对话框面板继承的父类: Frame类实现的接口: 没有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);}类名: setUpUIComponent作用: 主类。
继承的父类: Frame类实现的接口: windowClosing类,actionPerformed类private void setUpUIComponent() {setSize(640, 480);// 菜单栏//设置「文件」菜单// 快捷键设置// 设置「编辑」菜单// 设置「关于」菜单// 文字编辑区域// 按下窗口关闭钮事件处理// 菜单- 打开// 菜单- 保存// 菜单- 另存为// 菜单- 剪切// 菜单- 复制// 菜单- 粘贴menuAbout.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {// 显示对话框JOptionPane.showOptionDialog(null,"程序名称:\n JNotePad \n" +"程序设计:\n \n" +"简介:\n 一个简单的文字编辑器\n" +" 可作为验收Java的实现对象\n" +" 欢迎网友下载研究交流\n\n" +" /","关于JNotePad",JOptionPane.DEFAULT_OPTION,RMA TION_MESSAGE,null, null, null);}});3.2类的主要方法3.2.1输入后的文件保存: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;}}}3.2.2打开文件,显示选择文件对话框: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()));3.2.3打开文件,然后修改:private void closeFile() {// 是否已保存文件if(isCurrentFileSaved()) {// 释放窗口资源,而后关闭程序dispose();}else {int option = JOptionPane.showConfirmDialog(null, "文件已修改,是否保存?","保存文件?", JOptionPane.YES_NO_OPTION,JOptionPane.W ARNING_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();}}3.2.4设计的总体认识●JA V A设计的摘要●JA V A设计的目录结构●JA V A设计的概要和详细设计●JA V A设计的版权意识●JA V A设计需要编译的环境●JA V A设计的实用性3.2.5程序流程图图3绘制记事本方法PAD 图4运行结果图2 文字编辑保存显示文本框 关于文件 编辑 打开 保存 另存为 关闭 剪切 复制粘贴5测试分析5.1程序运行情况:程序能够正常运行,当保存时候,可以选择直接保存或者另存为,在另存为中,也可以选择磁盘,文字编写过程,缺少字体的选择,只能输入宋体,复制、粘贴、剪切等操作效果都能够完成,也可以采用快捷键方式。
5.2测试结果显示:图3图4图56 程序清单: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,"程序名称:\n JNotePad \n" +"程序设计:\n \n" +"简介:\n 一个简单的文字编辑器\n" +" 可作为验收Java的实现对象\n" +" 欢迎网友下载研究交流\n\n" +" /","关于JNotePad",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程序设计实用教程》科学出版社张白一崔尚林《面向对象程序设计—java》西安电子科技大学出版社潘浩李芙玲《Java程序设计》清华大学出版社吴其庆《Java程序设计实例教程》北京:冶金工业出版社柳西玲许斌编著. 《Java语言应用开发基础》北京:清华大学出版社设计总结经过一个学期的JA V A学习,对JA V A编程有了一定的认识,JA V A相对于C 语言,C语言是面向过程的,JAVA是面向对象的。