初学Java:仿写记事本

原创 2012年03月22日 19:52:38

一、前言
  
  纸上得来终觉浅,绝知此事要躬行。
  自学Java已经有一段时间了,最近读完了李兴华老师的《Java开发实战经典》一书,受益匪浅。感觉其中的知识比较全面,实用性也比较高,为了方便将来的查阅,还特意做了12万字的学习笔记。
  实际上学校的Java课程已经于上个学期结束了,但感觉学到的东西很少。我们可以在教材中了解到几乎每一种布局管理器,但在期末考试之后,仍然不知道GridBagLayout的用法,甚至不知道怎样才能找到答案;老师可以在课堂上把JDBC的原理剖析得很深,但考核中永远只是最基础的继承、多态问题,于是就很少有老师这么做了;有的同学可以把所有运算符的优先级和所有基本类型的取值范围背得烂熟,但在实际编程中发现,这根本就用不上——蛋疼。
  也许编程就是这样,更多的要靠自己去探索、去实践。只有这样,才能明白什么是自己真正需要的东西,什么只是“知识点”而已。毕竟这是技术活儿,只有做出来真正有用的东西才叫实在。

  回想起来,似乎从来没有编写过什么非作业性质的Java程序,于是花了两个星期的时间,用Java仿写一个Windows系统中的记事本程序(notepad.exe)。算是小刀开刃吧。
  起初我也感觉这很简单——Windows中还有比记事本更简单的程序吗?但画了主界面、做好了菜单之后才发现,有些功能我竟然从来没有用过,比如编码、转到。而在一些简单功能上,要保证其逻辑正确性不是想象中那么简单的,为了一个使用中“鼠标一点就能看到的效果”往往要付出很多心思。每每遇到什么问题,就会去翻看JDK文档,百度搜索。有时候为了一个不容易看出来的死循环,会原地转几个小时的圈子。毕竟是零经验啊,还只是个孩子……
  我目前还没有看过什么源码,只是从使用的角度来用Java语言(主要就是Swing)模仿系统的记事本功能,甚至没有什么全局规划,想到一点就做一点。因而我的代码毫无质量可言,大量冗余,结构混乱,漏洞百出。但我相信作为一个初学者,这个小程序还是有些许纪念意义的。
  今天完成了程序中的主要功能,边边角角的还没有修饰,也基本没有进行过完整测试,算是一个Alpha版吧。在这里贴出来全部源代码,希望能有更多同样奋斗在Java学习道路上的同学对我批评指正,帮助我进步。
  
二、备注与说明
  
  1. 我发现一个小BUG,不知道大家注意过没有。打开Windows 7中的记事本,点击“格式”-“字体”,将大小选为“七号”,点击确定。再次打开字体后,大小会自动变成“八号”。无论这两项如何选择,实际生效的只有“八号”。这是为什么呢?
  2. 仿写的记事本程序,“帮助”菜单中的功能基本没弄,没什么用;而“文件”中的“页面设置”和“打印”功能也没有实现,目前还没有思绪。“编辑”菜单中不仅有“撤销”功能,还加入了“恢复”功能,Java提供的效果似乎比Windows记事本要好,只是速度太慢了。
  
三、源代码(更新于2012.3.22
  
  Find.java
  GoDialog.java
  MenuAbout.java
  MyCellRenderer.java
  NoteFont.java
  NoteMenu.java
  Notepad.java(主)
  OpenFile.java
  Replace.java
  SaveFile.java
  Status.java
  TextKeyListener.java
  TextMouseListener.java
  

JAVA实现页面置换算法(OPT,FIFO,LRU)

public class page_replacement { private int n;//内储页框 private int m;//访问次数 private int F;...

Java中int与byte数组转换详解

1、与运算符的理解(&):            参加运算的两个数据,按二进位进行“与”运算。如果两个相应的二进位都为1,则该位的结果值为1,否则为0。即 0&0=0;0&1=0;1&0=0;1&1...

引用页_初学Java:仿写记事本_Notepad.java

返回    import java.awt.BorderLayout; import java.awt.Font; import java.awt.event.ActionEvent; impor...
  • Tieper
  • Tieper
  • 2012年03月22日 20:22
  • 314

引用页_初学Java:仿写记事本_SaveFile.java

返回    import java.io.File; import java.io.FileOutputStream; import java.io.PrintStream; import ja...
  • Tieper
  • Tieper
  • 2012年03月22日 20:28
  • 184

引用页_初学Java:仿写记事本_TextKeyListener.java

返回    /** * 为了状态栏功能而设立的监听类 * 第一次改写: * 同时也适用于对“编辑”-“删除”菜单的可用设置 * 第二次改写: * 同时也适用于对“格式”-“字体”...
  • Tieper
  • Tieper
  • 2012年03月22日 20:31
  • 266

引用页_初学Java:仿写记事本_GoDialog.java

返回    import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListene...
  • Tieper
  • Tieper
  • 2012年03月22日 20:12
  • 205

引用页_初学Java:仿写记事本_Find.java

返回    import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListene...
  • Tieper
  • Tieper
  • 2012年03月22日 20:08
  • 215

引用页_初学Java:仿写记事本_TextMouseListener.java

返回    /** * 为了状态栏功能而设立的监听类 * 第一次改写: * 同时也适用于对“编辑”-“删除”菜单的可用设置 * 第二次改写: * 同时也适用于对“格式”-“字体”...
  • Tieper
  • Tieper
  • 2012年03月22日 20:32
  • 173

引用页_初学Java:仿写记事本_OpenFile.java

返回    import java.io.File; import java.io.FileReader; import java.io.Reader; import javax.swing...
  • Tieper
  • Tieper
  • 2012年03月22日 20:23
  • 308

Java Swing写的字体选择器,仿记事本中的字体控件

Java Swing 写的字体选择器,仿记事本中的字体控件,使用操作方法与文件选择器JFileChooser基本相同。   import java.awt.BorderLayout; i...
  • ycb1689
  • ycb1689
  • 2012年12月19日 09:15
  • 2047
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:初学Java:仿写记事本
举报原因:
原因补充:

(最多只允许输入30个字)