基于Java实现的记事本程序

到山东找蓝翔

发布日期: 2021-07-24 09:52:44 浏览量: 85
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

一、引言

1.1 课程设计目的

  • 复习、巩固 Java 语言的基础知识,进一步加深对 Java 语言的理解和掌握

  • 课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力,提高学生适应实际,实践编程的能力

  • 培养学生在项目开发中创新意识及能力

  • 掌握窗口、菜单等高级组件的应用

  • 掌握 Java Swing 的使用方法

  • 了解 GUI 应用程序的创建过程与方法

1.2 题目说明

编写一个简单记事本程序,要求包含以下菜单项:

  • 文件新建、打开、保存、另保存、退出

  • 编辑剪切、复制、粘贴、查找、替换、全选

  • 帮助关于记事本

1.3 开发工具介绍

Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Kit,JDK)。

二、总体设计

2.1 系统开发平台

前端使用 Java 设计

2.2 系统流程图

2.3 功能结构图

“文件”菜单操作流程图

“编辑”菜单操作流程图

“帮助”菜单操作流程图

三、详细说明

类设计

设计两个类,一个 SystemParam 类,具有自动换行功能,另一个 NotepadMainFrame 主类。

界面设计

在主界面中设计一个 Frame 窗口,继承 JPanel 类,并在其中加入下拉菜单和一个文本域控件。

功能设计

在下拉菜单中加入子菜单并进行监听,分别实现对文件的操作功能。点击不同菜单项时,显示不同界面。

代码设计

编写每个控件的相关代码,并进行调试。

3.1 界面设计

3.1.1 界面设计

创建一个下拉菜单和文本域,在文本域中显示编辑文件信息。

界面主要代码以及菜单部分代码

  1. setTitle("记事本");
  2. setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); //设置用户在此窗体上发起 "close" 时,不执行任何操作
  3. setBounds(400, 180, 600, 400); //设置窗口位置和大小
  4. JMenuBar menuBar = new JMenuBar(); //菜单栏
  5. setJMenuBar(menuBar);
  6. JMenu itemFile = new JMenu("文件(F)");
  7. itemFile.setMnemonic('F'); //设置快捷键"Alt+F"
  8. menuBar.add(itemFile); //将"文件"菜单添加到菜单栏上
  9. itemNew = new JMenuItem("新建(N)"); //创建"新建"菜单条
  10. itemFile.add(itemNew); //将"新建"菜单条添加到"文件"菜单
  11. textArea = new JTextArea();
  12. contentPane = new JPanel();
  13. contentPane.setLayout(new BorderLayout(0, 0)); //边界布局
  14. setContentPane(contentPane); //把contentPane对象设置成为内容面板
  15. scrollPane = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); //设置水平和垂直滚动条
  16. contentPane.add(scrollPane, BorderLayout.CENTER);

3.1.2 功能设计

对每个菜单项进行注册监听。点击不同菜单项时,显示不同界面。

部分代码

  1. itemNew.addActionListener(this); //注册监听者

3.1.3 代码设计

部分代码

  1. private void openFile() { //打开文件
  2. JFileChooser choose=new JFileChooser(); //打开文件选择框
  3. int result=choose.showOpenDialog(this); //选择文件
  4. if(result==JFileChooser.APPROVE_OPTION) {
  5. File file=choose.getSelectedFile(); //取得选择的文件
  6. currentFileName=file.getName(); //打开已存在的文件,提前将文件名存起来
  7. if( currentFileName.endsWith(".java")||currentFileName.endsWith(".txt")) { //只打开java后缀文件
  8. this.setTitle(this.currentFileName);
  9. BufferedReader br=null;
  10. try {
  11. @SuppressWarnings("resource")
  12. InputStreamReader isr=new InputStreamReader(new FileInputStream(file),"GBK"); //建立文件流[字符流]
  13. br=new BufferedReader(isr); //动态绑定
  14. StringBuffer sb=new StringBuffer(); //读取内容
  15. String line=null;
  16. while((line=br.readLine())!=null) { //一次读一行,读入null时文件结束
  17. sb.append(line+SystemParam.LINE_SEPARATOR);
  18. }
  19. textArea.setText(sb.toString()); //显示在文本框[多框]
  20. }
  21. catch(Exception e) {
  22. e.printStackTrace();
  23. }
  24. }
  25. else {
  26. JOptionPane.showMessageDialog(this, "打开的文件类型不匹配","提示 ",1);
  27. }
  28. }
  29. }
  30. private void save() { //保存
  31. JFileChooser choose=new JFileChooser(); //打开文件选择框
  32. int result=choose.showSaveDialog(this); //选择文件夹
  33. if(result==JFileChooser.APPROVE_OPTION) {
  34. File file=choose.getSelectedFile(); //取得选择的文件夹
  35. FileWriter fw=null;
  36. try { //保存
  37. fw=new FileWriter(file);
  38. fw.write(textArea.getText());
  39. currentFileName=file.getName(); //将保存文件名存起来
  40. fw.flush(); //把缓冲区的数据强行输出
  41. this.setTitle(currentFileName);
  42. }
  43. catch(Exception e) {
  44. e.printStackTrace();
  45. }
  46. }
  47. }
  48. replace.addActionListener(new ActionListener() { // "替换"按钮的事件处理
  49. public void actionPerformed(ActionEvent e) {
  50. if (replaceText.getText().length() == 0 && textArea.getSelectedText() != null) //替换文本内容长度为空和文本不为空
  51. textArea.replaceSelection("");
  52. if (replaceText.getText().length() > 0 && textArea.getSelectedText() != null)
  53. textArea.replaceSelection(replaceText.getText());
  54. }
  55. });

四、系统的调试和运行

4.1 程序运行界面

4.2 “文件”菜单的菜单项

4.3 “编辑”菜单的菜单项

4.4 打开文件、保存、另保存时的界面

4.5 打开了某一文本的截图

4.6 使用查找、替换时的界面截图

4.7 查找某一内容的截图

4.8 “o”替换“H”的截图

总结

由于本次课程设计是一个人选一个题目,所以只有通过自已努力,有什么不懂的请教同学或在网上搜集一些资料,可网上的资料有很多的不足,刚开始的两天,感觉还有很多地方需要查资料,进度也比较慢。

参考文献

  • [1] 叶核亚.《数据结构(Java 版)(第 3 版)》.北京:电子工业出版社.2013 年.

  • [2] 刘小晶. 《数据结构实例解析与实验指导——Java 语言描述》.北京:清华大学出版.2013 年.

  • [3] 徐孝凯. 《数据结构实用教程(Java 语言描述)》.北京:清华大学出版.2013 年.

  • [4]陈媛. 《算法与数据结构(Java 语言描述)》.北京:清华大学出版.2013 年.

上传的附件 cloud_download 记事本项目说明书.docx ( 287.08kb, 1次下载 ) cloud_download 记事本.zip ( 487.74kb, 1次下载 )
error_outline 下载需要12点积分
eject