简单记事本java源码实例

 更新时间:2014年11月25日 11:35:58   投稿:shichen2014  
这篇文章主要介绍了简单记事本java源码,以一个完整的实例形式分析了记事本的Java实现方法,对于Java应用程序的开发有一定的参考借鉴价值,需要的朋友可以参考下

本文实例讲述了简单记事本java实现代码。分享给大家供大家参考。具体如下:

完整代码如下:

复制代码 代码如下:
import java.awt.*;
import java.io.*;
import java.awt.datatransfer.*;
import java.awt.event.*;
 
public class Main extends Frame implements ActionListener {
        private static final long serialVersionUID = 1L;
TextArea textArea = new TextArea();
   MenuBar menuBar = new MenuBar();
   Menu fileMenu = new Menu("File");
   MenuItem newItem = new MenuItem("New");
   MenuItem openItem = new MenuItem("Open");
   MenuItem saveItem = new MenuItem("Save");
   MenuItem saveAsItem = new MenuItem("Save As");
   MenuItem exitItem = new MenuItem("Exit");
   Menu editMenu = new Menu("Edit");
   MenuItem selectItem = new MenuItem("Select All");
   MenuItem copyItem = new MenuItem("Copy");
   MenuItem cutItem = new MenuItem("Cut");
   MenuItem pasteItem = new MenuItem("Paste");
   String fileName = null;
   Toolkit toolKit=Toolkit.getDefaultToolkit();
   Clipboard clipBoard=toolKit.getSystemClipboard();
   
    private FileDialog openFileDialog = new FileDialog(this,"Open File",FileDialog.LOAD);
    private FileDialog saveAsFileDialog = new FileDialog(this,"Save File As",FileDialog.SAVE);
 
  public Main(){
    setTitle("记事本程序-by Jackbase");
    setFont(new Font("Times New Roman",Font.PLAIN,12));
    setBackground(Color.white);
    setSize(400,300);
    fileMenu.add(newItem);
    fileMenu.add(openItem);
    fileMenu.addSeparator();
    fileMenu.add(saveItem);
    fileMenu.add(saveAsItem);
    fileMenu.addSeparator();
    fileMenu.add(exitItem);
    editMenu.add(selectItem);
    editMenu.addSeparator();
    editMenu.add(copyItem);
    editMenu.add(cutItem);
    editMenu.add(pasteItem);
    menuBar.add(fileMenu);
    menuBar.add(editMenu);
    setMenuBar(menuBar);
    add(textArea);
    addWindowListener(new WindowAdapter(){
                      public void windowClosing(WindowEvent e){
                          System.exit(0);
                        }
                      });
    newItem.addActionListener(this);
    openItem.addActionListener(this);
    saveItem.addActionListener(this);
    saveAsItem.addActionListener(this);
    exitItem.addActionListener(this);
    selectItem.addActionListener(this);
    copyItem.addActionListener(this);
    cutItem.addActionListener(this);
    pasteItem.addActionListener(this);
  }
 
  public void actionPerformed(ActionEvent e) {  //监听事件
    Object eventSource = e.getSource();
    if(eventSource == newItem){
      textArea.setText("");
    }else if(eventSource == openItem){
      openFileDialog.show();
      fileName = openFileDialog.getDirectory()+openFileDialog.getFile();
      if(fileName != null)
        readFile(fileName);
    }else if (eventSource == saveItem){
      if(fileName != null)
        writeFile(fileName);
    }else if(eventSource == saveAsItem){
      saveAsFileDialog.show();
      fileName = saveAsFileDialog.getDirectory()+saveAsFileDialog.getFile();
      if (fileName!= null)
        writeFile(fileName);
    }else if(eventSource == selectItem){
       textArea.selectAll();
    }else if(eventSource == copyItem){
       String text=textArea.getSelectedText();
       StringSelection selection=new StringSelection(text);
       clipBoard.setContents(selection,null);
    }else if(eventSource == cutItem){
       String text=textArea.getSelectedText();
       StringSelection selection=new StringSelection(text);
       clipBoard.setContents(selection,null);
       textArea.replaceRange("",textArea.getSelectionStart(),textArea.getSelectionEnd());
    }else if(eventSource == pasteItem){
       Transferable contents=clipBoard.getContents(this);
       if(contents==null) return;
       String text;
       text="";
       try{
            text=(String)contents.getTransferData(DataFlavor.stringFlavor);
        }catch(Exception exception){
        }
       textArea.replaceRange(text,textArea.getSelectionStart(),textArea.getSelectionEnd());
    }else if(eventSource == exitItem){
      System.exit(0);
    }
  }
 
  public void readFile(String fileName){ //读取文件处理
    try{
      File file = new File(fileName);
      FileReader readIn = new FileReader(file);
      int size = (int)file.length();
      int charsRead = 0;
      char[] content = new char[size];
      while(readIn.ready())
        charsRead += readIn.read(content, charsRead, size - charsRead);
      readIn.close();
      textArea.setText(new String(content, 0, charsRead));
    }
    catch(IOException e){
      System.out.println("Error opening file");
    }
  }
 
  public void writeFile(String fileName){  //写入文件处理
    try{
      File file = new File (fileName);
      FileWriter writeOut = new FileWriter(file);
      writeOut.write(textArea.getText());
      writeOut.close();
    }
    catch(IOException e){
      System.out.println("Error writing file");
    }
  }
 
    @SuppressWarnings("deprecation")
        public static void main(String[] args){
      Frame frame = new Main(); //创建对象
      frame.show();   //是对象显示
   }
}

运行结果如下图所示:

希望本文所述对大家的java程序设计有所帮助。

相关文章

  • java实现打砖块游戏算法

    java实现打砖块游戏算法

    这篇文章主要为大家详细介绍了java实现打砖块游戏算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • java实现Linux(centos) 中docker容器下命令交互的代码(配置向导)

    java实现Linux(centos) 中docker容器下命令交互的代码(配置向导)

    小编在开发项目时遇到个需求,因为系统部署每次都要多台机器拆分部署,很麻烦,怎么配置比较方便呢,今天小编给大家介绍java实现Linux(centos) 中docker容器下命令交互的代码(配置向导),感兴趣的朋友一起看看吧
    2021-05-05
  • Java字符串相关类使用方法详解

    Java字符串相关类使用方法详解

    String、StringBuilder、StringBuffer还傻傻分不清,下面这篇文章主要给大家介绍了关于Java字符串相关类使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • Spring Boot2.X中findOne的使用详解

    Spring Boot2.X中findOne的使用详解

    这篇文章主要介绍了Spring Boot2.X中findOne的使用详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 基于java HashMap插入重复Key值问题

    基于java HashMap插入重复Key值问题

    这篇文章主要介绍了基于java HashMap插入重复Key值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 新手了解java 集合基础知识

    新手了解java 集合基础知识

    今天小编就为大家分享一篇关于Java集合总结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧,希望对你有所帮助
    2021-07-07
  • IDEA编写JavaWeb出现乱码问题解决方案

    IDEA编写JavaWeb出现乱码问题解决方案

    这篇文章主要介绍了IDEA编写JavaWeb出现乱码问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Spring详细解读事务管理

    Spring详细解读事务管理

    Spring事务的本质就是对数据库事务的支持,没有数据库事务,Spring是无法提供事务功能的。Spring只提供统一的事务管理接口,具体实现都是由数据库自己实现的,Spring会在事务开始时,根据当前设置的隔离级别,调整数据库的隔离级别,由此保持一致
    2022-04-04
  • 基于java中BlockingQueue的使用介绍

    基于java中BlockingQueue的使用介绍

    本篇文章小编为大家介绍,基于java中BlockingQueue的使用介绍。需要的朋友参考下
    2013-04-04
  • Centos7.3下jre1.8安装和配置教程

    Centos7.3下jre1.8安装和配置教程

    这篇文章主要为大家详细介绍了Centos7.3下jre1.8安装和配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09

最新评论