用Java实现文本编辑器:创建、浏览、编辑文件;剪贴、复制、粘贴;保存、另存为;字符统计;自动换行 您所在的位置:网站首页 如何用java编译一个压缩文件夹 用Java实现文本编辑器:创建、浏览、编辑文件;剪贴、复制、粘贴;保存、另存为;字符统计;自动换行

用Java实现文本编辑器:创建、浏览、编辑文件;剪贴、复制、粘贴;保存、另存为;字符统计;自动换行

2024-07-12 02:02| 来源: 网络整理| 查看: 265

Java做文本编辑器的项目,搜了下看到网上有各种版本的Java文本编辑器有很多种,但有的实现很麻烦,最近刚好在做这个实现就也发一个,代码写得很朴素,注释无比详细。

测试过没有Bug,如果有什么问题,欢迎探讨。代码供大家借鉴参考,欢迎交流。

用Java实现文本编辑器:创建,浏览、编辑文件;剪贴、复制、粘贴;保存以及另存为;统计字符

一、开发环境

二、程序模块功能描述

(一)文件

(二)编辑

(三)统计

(三)格式:

(四)帮助

三、关键Java API列表

四、运行结果

一、开发环境

开发环境:Windows 10操作系统;JDK 13.0.2

运行环境:JRE 13.0.2 

开发工具:Notepad++文本编辑器

二、程序模块功能描述

本项目完成的文本编译器菜单栏有四个选项:文件、编辑、格式、帮助。

(一)文件

文件下拉菜单包括“新建、打开、保存、另存为、退出”5个功能。

新建:创建一个新的文本。打开:打开一个指定的文本文件。保存:存储文本内容修改。另存为:把文件存储在其他位置。退出:关闭程序。 (二)编辑

编辑下拉菜单包括“剪切、复制、粘贴”3个功能。

剪切(可以使用快捷键Ctrl + X)复制(可以使用快捷键Ctrl + C)粘贴(可以使用快捷键Ctrl + V) (三)统计

  统计下拉菜单中有“统计”选项。

统计:自动统计已输入字符中汉字、大小写字母等个数。 (三)格式:

格式下拉菜单有“自动换行”功能。

自动换行:勾选上会自动换行。 (四)帮助

帮助菜单下包括“帮助、关于”两个功能。

帮助:介绍了文本编辑器如何使用。关于:编辑器开发相关信息。 三、关键Java API列表 java.awt.*; java.awt.event.ActionEvent; java.awt.event.ActionListener; java.io.BufferedReader; java.io.BufferedWriter; java.io.File; java.io.FileReader; java.io.FileWriter; java.io.IOException; javax.swing.*;

主框架:

import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; 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.*; public class TextFrame extends JFrame{ public TextFrame() { super("简易文本编辑器"); //调用父类的构造方法 //创建菜单栏(JMenuBar)对象 JMenuBar mBar = new JMenuBar(); //在JFrame等容器中设置菜单栏对象,即将菜单栏添加到框架容器中 this.setJMenuBar(mBar); //创建菜单 JMenu file = new JMenu("文件"); JMenu edit = new JMenu("编辑"); JMenu count = new JMenu("统计"); JMenu form = new JMenu("格式"); JMenu help = new JMenu("帮助"); //将菜单添加到菜单栏中 mBar.add(file); mBar.add(edit); mBar.add(count); mBar.add(form); mBar.add(help); JTextArea workArea = new JTextArea(); //创建多行文本框 JScrollPane imgScrollPane = new JScrollPane(workArea); //创建一个空视图,只要组件内容超过视图大小就会显示水平和垂直滚动条 add(imgScrollPane,BorderLayout.CENTER); //将当前类的对象实例加到frame的中间位置 //定义打开和保存对话框 FileDialog openDia; FileDialog saveDia; //默认模式为 FileDialog.LOAD openDia = new FileDialog(this,"打开",FileDialog.LOAD); saveDia = new FileDialog(this,"另存为",FileDialog.SAVE); JMenuItem item1_1 = new JMenuItem("新建"); //生成一个对象 item1_1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ //对当前的控件添加监听器,点击控件时就会触发监听函数里面的内容 workArea.setText(""); //清空文本 } }); JMenuItem item1_2 = new JMenuItem("打开"); item1_2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ //对当前的控件添加监听器,点击控件时就会触发监听函数里面的内容 openDia.setVisible(true); //打开文件对话框 String dirPath = openDia.getDirectory(); //获取打开文件路径并保存 String fileName = openDia.getFile(); //获取文件名称并保存 //判断打开路径或目录是否为空,则返回空 if(dirPath == null || fileName == null){ return ; } workArea.setText("");//清空文本 File fileO = new File(dirPath,fileName); try{ BufferedReader bufr = new BufferedReader(new FileReader(fileO)); //尝试从文件中读取内容 String line = null; //变量字符串初始化为空 while((line = bufr.readLine()) != null){ workArea.append(line + "\r\n"); //显示每行内容 } bufr.close(); //关闭文本 } catch(IOException er1){ throw new RuntimeException("文件读取失败!"); } } }); JMenuItem item1_3 = new JMenuItem("保存"); item1_3.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ //对当前的控件添加一个监听器,点击控件时就会触发监听函数里面的内容 File fileS = null; if(fileS == null){ saveDia.setVisible(true); //显示保存文件对话框 String dirPath = saveDia.getDirectory(); //获取保存文件路径并保存到字符串中 String fileName = saveDia.getFile(); //获取保存文件名称并保存到字符串中 if(dirPath == null || fileName == null) //判断路径和文件是否为空 return; //返回空值 fileS = new File(dirPath,fileName); //文件不为空,新建一个路径和名称 } try{ BufferedWriter bufw = new BufferedWriter(new FileWriter(fileS)); //尝试从文件中读取内容 String text = workArea.getText(); //获取文本内容 bufw.write(text); //将获取文本内容写入到字符输出流 bufw.close(); //关闭文件 }catch(IOException er){ throw new RuntimeException("文件保存失败!"); } } }); JMenuItem item1_4 = new JMenuItem("另存为"); item1_4.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ //对当前的控件添加一个监听器,点击控件时就会触发监听函数里面的内容 File fileS = null; if(fileS == null){ saveDia.setVisible(true); //显示另存为文件对话框 String dirPath = saveDia.getDirectory(); //获取保存文件路径并保存到字符串中 String fileName = saveDia.getFile(); //获取保存文件名称并保存到字符串中 if(dirPath == null || fileName == null) //判断路径和文件是否为空 return ; //返回空值 fileS = new File(dirPath,fileName); //文件不为空,新建一个路径和名称 } try{ BufferedWriter bufw = new BufferedWriter(new FileWriter(fileS)); //尝试从文件中读取内容 String text = workArea.getText(); //获取文本内容 bufw.write(text); //将获取文本内容写入到字符输出流 bufw.close(); //关闭文件 } catch(IOException er){ throw new RuntimeException("文件保存失败!"); } } }); JMenuItem item1_5 = new JMenuItem("退出"); item1_5.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ //对当前的控件添加一个监听器,点击控件时就会触发监听函数里面的内容 System.exit(0); } }); //创建菜单项 JMenuItem item2_1 = new JMenuItem("剪切"); item2_1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ workArea.cut(); } }); JMenuItem item2_2 = new JMenuItem("复制"); item2_2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ workArea.copy(); } }); JMenuItem item2_3 = new JMenuItem("粘贴"); item2_3.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ workArea.paste(); } }); JMenuItem item2_4 = new JMenuItem("统计"); item2_4.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ //对当前的控件添加一个监听器,点击控件时就会触发监听函数里面的内容 //try代码块,当发生异常时会转到catch代码块中 String a = workArea.getText();//定义字符串变量,并赋值为用户输入的信息 //创建类进行文件的读取,并指定编码格式为utf-8 //char[] ch = a.toCharArray();//把字符串变成char数组 int c = 0,h = 0,ll = 0,l = 0,n = 0,o = 0,sum = 0;//定义整型变量,用于统计字符数 for(int i = 0;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有