java写的记事本

来源:互联网 发布:淘宝购买记录查询网站 编辑:程序博客网 时间:2024/06/11 14:55

这一个星期,写了一个记事本,其中看了从网上找的几个功能不是很完整的记事本的代码,从这些代码中借鉴了不少东西,然后再百度、谷歌加看文档,尽可能的完善记事本的功能。

之前在csdn上看到一篇文章说通过做项目学习是最好的学习方法,这句话我比较认同,从这几次做的几个小程序来看,确实让人进步蛮快,通过写这个记事本,关于java的更多知识点又让我了然于胸并且能够运用它们,下面不一一列举这些方方面面,具体说说这个记事本的功能及其实现吧:

 

在整个代码的编写过程中,我觉得比较困难的在于文件菜单选项下的:新建、打开、保存、关闭,再就是编辑菜单选项下的查找与替换等,等并不是说这几个模块的实现难,而是因为它们受制于别的状态。

 比如说点打开这个模块,分了好几种情况:

   (一)、直接在空白文档的基础上打开

   (二)、在非空白文档的基础上打开

           ①、还没保存过或不是打开的已存在文件

           ②、保存过或打开已存在的文件

即点击打开时,若是上面所列的第一种情况,则直接弹出打开对话框并选择文件即可,若是第二种情况,则要先弹出一个询问对话框问是否保存,选择了再继续,如果不保存,则同第一种情况;若选择保存,又分两种情况,第一种是(二)中的①情况,即还要选择保存路径,第二种是(二)  中的②情况,直接保存即可。

具体代码实现如下:

 

// 打开(O)按钮事件监听openItem.addActionListener(new ActionListener(){    public void actionPerformed(ActionEvent event){      if (selectedFile == null && textArea.getText().equals("")){         } else {   int btn = JOptionPane.showConfirmDialog(container, "是否保存到"     + selectedFile + "?", "是否保存",     JOptionPane.YES_NO_CANCEL_OPTION);     if (btn == JOptionPane.CANCEL_OPTION) {  return;     } else if (btn == JOptionPane.YES_OPTION) {   if (selectedFile != null) {   try {       BufferedWriter bw = new BufferedWriter(new FileWriter(selectedFile));String str = textArea.getText();String[] lines = str.split("\n");for (String line : lines) {    bw.write(line + "\r\n");}bw.flush();bw.close();newPage = false;} catch (IOException e) {} else if (selectedFile == null) {     choose = new JFileChooser();     int state = choose.showSaveDialog(container);     if (state == JFileChooser.APPROVE_OPTION) {     try { File file = choose.getSelectedFile();          BufferedWriter bw = new BufferedWriter(     new FileWriter(file)); String str = textArea.getText(); String[] lines = str.split("\n"); for (String line : lines) {                                                          bw.write(line + "\r\n"); } bw.flush(); file.createNewFile();  bw.close();          newPage = false; } catch (IOException e) {            JOptionPane.showConfirmDialog(container,"保存文件失败!", "ERROR",JOptionPane.ERROR_MESSAGE);}}}}}choose = new JFileChooser();choose.setFileFilter(new Filter());int state = choose.showOpenDialog(container);if (state == JFileChooser.APPROVE_OPTION) {   textField.setText(choose.getSelectedFile().toString());   try {        selectedFile = choose.getSelectedFile();        BufferedReader br = new BufferedReader(new FileReader(           selectedFile));        textArea.read(br, "");        br.close();        newPage = false;        }catch (IOException e) {  JOptionPane.showConfirmDialog(container, "打开文件失败!","ERROR", JOptionPane.ERROR_MESSAGE);}}}});

 

然后新建、保存以及关闭都是类似处理,即处理前要判断然后询问是否先保存再进行相应操作,其中保存模块的代码如下:

 

// 保存(S)按钮监听saveItem.addActionListener(new ActionListener() {    @Override    public void actionPerformed(ActionEvent event) {// TODO Auto-generated method stubif (newPage == true || selectedFile == null) {choose = new JFileChooser();         int state = choose.showSaveDialog(container);         if (state == JFileChooser.APPROVE_OPTION) {   try {         File file = choose.getSelectedFile();BufferedWriter bw = new BufferedWriter(new FileWriter(file));String str = textArea.getText();String[] lines = str.split("\n");for (String line : lines) {   bw.write(line + "\r\n");}bw.flush();file.createNewFile();bw.close();newPage = false;selectedFile = file;         } catch (IOException e) {    JOptionPane.showMessageDialog(container, "保存文件失败","ERROR", JOptionPane.ERROR_MESSAGE);}    }} else if (newPage == false && selectedFile != null) {  try {    BufferedWriter bw = new BufferedWriter(new FileWriter(selectedFile));    String str = textArea.getText();    String[] lines = str.split("\n");    for (String line : lines) {        bw.write(line + "\r\n");    }    bw.flush();    bw.close();    newPage = false;} catch (IOException e) {    JOptionPane.showMessageDialog(container, "保存文件失败","ERROR", JOptionPane.ERROR_MESSAGE);}}      }});


整个记事本的功能包括查找、查找与替换、字数统计、字数放大缩小、字体颜色的选择以及背景色的选择,都实现了,还有把编辑里的复制、粘贴、全选等功能也集成到右键里,等等,总之通过实现这个记事本,付出的努力比较多,当然回报也不少,由于整个代码有1000行,不能一一贴出来,有兴趣的朋友可以到CSDN的资源区:

http://download.csdn.net/detail/yanghai0321/3898890

下载。

 

原创粉丝点击