Java设计文本编辑器

article/2025/11/9 11:42:12

@阿乐今天敲代码没

Java设计文本编辑器

  • 前言
  • 一、实现功能
  • 二、扼要代码
      • 1.界面程序设计
      • 2.文件菜单设计
      • 3.编辑菜单栏设计
      • 4.格式菜单栏设计
  • 运行截图


前言

利用Java设计一个文本编辑器。


提示:以下是本篇文章正文内容,下面案例可供参考

一、实现功能

该简易记事本主要可实现以下几个功能:
(1)菜单中有“文件”、“编辑”、“格式”三个主菜单。
(2)“文件”有“打开”、“保存”、“退出”三个子菜单:分别用于打开文件,保存文件,退出记事本。
(3)“编辑”中有“剪切”、“复制”、“粘贴”三个子菜单:用于剪切文字,复制文字,粘贴文字操作。
(4)“格式”中有“自动换行”,“取消自动换行”,“断行不断字”, “取消断行不断字”四个子菜单,分别用于设置是否自动换行等。
用户可根据需求选择是否是用鼠标右键进行一系列的编辑操作,进一步体验记事本的性能。

二、扼要代码

1.界面程序设计

创建一个下拉菜单和文本域,在文本域中显示编辑的文件内容。
private JPopupMenu pm; 
private JMenuItem item1,item2,item3,item4,item5; 
public Nodepad() 
{ 
super("简单记事本"); 
setSize(400,300); 
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
} catch (Exception e){ System.err.println("不能被设置外观的原因:"+e);} 
c=getContentPane();        //创建一个内容面板 
editor = new JTextArea();  //创建一个文本区
c.add(new JScrollPane(editor)); //设置滚动条,并添加到内容面板 
——————————————————————————————
//弹出菜单的实现 
pm =new JPopupMenu();  //创建弹出菜单 
item1 = new JMenuItem("打开"); 
item2 = new JMenuItem("保存"); 
item3 = new JMenuItem("复制"); 
item4 = new JMenuItem("剪切");
item5 = new JMenuItem("粘贴"); 
JPHandler JP=new JPHandler(); 
item1.addActionListener(JP);  //注册菜单项的鼠标事件监听器 
item2.addActionListener(JP); 
item3.addActionListener(JP); 
item4.addActionListener(JP); 
item5.addActionListener(JP); 
editor.addMouseListener(JP);  //注册文本区的鼠标事件监听器 
pm.add(item1);  pm.add(item2); 
pm.add(item3);  pm.add(item4); 
pm.add(item5); 
//把菜单栏、工具栏、弹出菜单添加到内容面板 
setJMenuBar(mb);        //显示菜单栏 
c.add(toolBar,BorderLayout.NORTH);           
setVisible(true); 
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} 

2.文件菜单设计

//文件菜单的实现 
mb = new JMenuBar();    //创建菜单栏
fileMenu = new JMenu("文件(F)");//创建菜单
fileMenuOpen = new JMenuItem("打开(O)...Ctrl+O"); 
fileMenuSave = new JMenuItem("保存(S)...Ctrl+S");
fileMenuExit = new JMenuItem("退出"); 
JMHandler JM=new JMHandler();      //创建监听器
fileMenuOpen.addActionListener(JM); //注册监听器
fileMenuSave.addActionListener(JM); 
fileMenuExit.addActionListener(JM); 
fileMenu.add(fileMenuOpen); 
fileMenu.add(fileMenuSave); 
fileMenu.addSeparator();    //添加分隔线 
fileMenu.add(fileMenuExit); 
fileMenu.setFont(f);        //设置菜单中文体的字体

3.编辑菜单栏设计

//编辑菜单的实现 
editMenu = new JMenu("编辑(E)"); 
editMenuCopy = new JMenuItem("复制(C) Ctrl+C"); 
editMenuCut = new JMenuItem("剪切(T) Ctrl+X"); 
editMenuPaste = new JMenuItem("粘贴(P) Ctrl+v"); 
EMHandler EM=new EMHandler();  //创建监听器
editMenuCopy.addActionListener(EM);//注册监听器 
editMenuCut.addActionListener(EM); 
editMenuPaste.addActionListener(EM); 
editMenu.add(editMenuCopy); 
editMenu.add(editMenuCut); 
editMenu.add(editMenuPaste); 
editMenu.setFont(f); 

4.格式菜单栏设计

//格式菜单的实现 
formatMenu = new JMenu("格式(O)");            //创建菜单 
formatSet = new JMenu("格式设置");          //二级菜单 
lineWrap = new JMenuItem("自动换行");      //二级菜单项 
cancleLineWrap = new JMenuItem("取消自动换行"); 
wrapStyleWord = new JMenuItem("断行不断字"); 
cancleWrapStyleWord = new JMenuItem("取消断行不断字"); 
FMHandler FM=new FMHandler();              //创建事件监听器 
lineWrap.addActionListener(FM);            //注册二级菜单项的监听器
cancleLineWrap.addActionListener(FM); 
wrapStyleWord.addActionListener(FM);
cancleWrapStyleWord.addActionListener(FM); 
formatSet.add(lineWrap); 
formatSet.add(cancleLineWrap); 
formatSet.addSeparator();  //添加分隔线
formatSet.add(wrapStyleWord); 
formatSet.add(cancleWrapStyleWord); 
formatMenu.add(formatSet); 
formatMenu.setFont(f); 
//将菜单全部添加菜单棒里
mb.add(fileMenu); 
mb.add(editMenu); 
mb.add(formatMenu);

运行截图

文本编辑器


http://chatgpt.dhexx.cn/article/oGTliAli.shtml

相关文章

Java课设——文本编辑器

来自:https://blog.csdn.net/qq_39169598/article/details/84726959 原创不易,转载请加上作者 一、需求 编程实现一个文本编辑器,使其具有新建、打开、保存,编辑(查找、替换、大小写转换等)、统计&#…

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

Java做文本编辑器的项目,搜了下看到网上有各种版本的Java文本编辑器有很多种,但有的实现很麻烦,最近刚好在做这个实现就也发一个,代码写得很朴素,注释无比详细。 测试过没有Bug,如果有什么问题&#xff0c…

Java实现简单的文本编辑器

1、首先创建一个编辑器EditorDemo类,继承JFrame类,具体实现编码如下: 2、创建菜单栏,新增各个菜单项,比如文件、编辑、帮助等功能,新增createJMenuBar方法如下: /*** 创建菜单栏* param acti…

你知道在深圳一个月花多少钱吗?

在深圳一个月花多少钱,才能活得比较像样? 早上上班挤地铁转公共,7到10块钱,中午在公司叫一份外卖,22块钱到30块钱,晚上加班和同事一起吃饭,25块左右,赶上末班地铁7块钱,房…

开发一个app需要多少钱

APP应用开发主要分为原生APP和HTML5APP开发,使用HTML5开发的app价格不是很高,但是在体验上,访问速度上比原生的有差距。 第一、商城类app报价计算 以H5的封装案例,价格比较便宜,商城价格几万就能搞定,不会超…

一般培训python要多少钱

Python语言相对简单并且非常适合初学者,使初学者可以专注于编程逻辑,而不会陷入晦涩的语法细节中。 学习python提供了比其他任何编程语言更多的职业发展选择。 那么,python培训班一般要多少钱? 伴随着互联网技术的迅猛发展&…

微信小程序开发一个多少钱

小程序开发是当前比较流行的一项技术服务,能够为企业和个人带来巨大的商业价值和社会价值,但是小程序开发费用也是潜在的成本之一。在选择小程序开发服务时,了解开发费用如何计算、影响价格的因素以及如何降低成本等方面的知识,可…

开发一个App大概要多少钱?

结合自己的各种采坑失败经验以及周边个别成功试水经验,站在个人角度给出一些理解。 APP制作有多种形式,所以需要的成本差异较大。 1.寻找外包公司 2.模板APP(内行叫SAAS) 3.自己组建团队 目录 互联网外包公司的成本构成&#…

chatgpt赋能python:如何让Python暂停?

如何让Python暂停? Python是一种高级编程语言,常用于数据分析、机器学习等领域。在Python编程中,我们经常需要让程序执行暂停一段时间,等待某些操作完成。本文将介绍如何让Python暂停,以及如何在SEO中优化文章标题&am…

独家 | ChatGPT可以解决分级和分类这样的简单机器学习任务

作者:Damir Yalalov 翻译:陈超 校对:赵茹萱本文约1100字,建议阅读5分钟 本文介绍了ChatGPT如何解决简单的机器学习任务并给出了鸢尾花分类和城市预测两个案例。 一句话概括: ChatGPT可以帮助你完成简单的机器学习任务…

分享 7 个不错的 AI 工具

人工智能的世界继续让我们着迷,近期的 OpenAI ChatGPT 掀起人们对人工智能的更大的期待,本文收集了 7 个人工智能 (AI) 工具,其中大部分易于使用,有些更复杂……比如构建 ML 模型。 1. GFP-GAN:照片修复 GFP-GAN 是一…

你们怎么都有自己的聊天机器人?给我也来一个!

点击左上方蓝字关注我们 PaddlePaddle Wechaty AI ChatBot创意赛正在火热进行中,人工智能时代的ChatBot需要具备哪些能力?由你来定义!参赛的小伙伴们果然各显神通,快来pick你心中最中意的聊天机器人吧,并献上你珍贵的…

【AI绘画打卡】| 用漫画生成器绘制宅男最爱的二次元美女

二次元美女在日本文化中已经成为一种流行文化和艺术形式,包括漫画、动画等。由于此类作品的富有想象力、多样性和虚构,像二次元美女这样的虚拟角色往往可以充分满足人们的幻想和情感需求。这也是许多宅男在二次元世界寻找自己理想女友的原因之一。 作品…

进程地址空间详解

进程地址空间 文章目录 进程地址空间验证地址空间的基本排布进程地址空间究竟是什么? 地址空间和物理内存之间的关系为什么要存在地址空间? 我们在学习C语言期间,经常可以提及到这些区域,有一个问题:这里的地址空间是内…

【GlobalMapper精品教程】044:空间操作(1)——交集(Intersection)

GlobalMapper提供的空间分析(操作)的方法有:交集、并集、单并集、差异、对称差集、相交、重叠、接触、包含、等于、内部、分离等,本文主要讲述交集工具的使用。 文章目录 一、实验数据二、符号化设置三、交集运算四、结果展示1. 运行提示2. 空间查看3. 属性表查看五、心灵感…

PostgreSQL的表空间

PostgreSQL之表空间 1、什么是PG中的表空间(tablespace)? pg中的表空间实际上就是文件系统中的一个目录, 是pg中数据库对象(包括表、索引等)的容器。 Pg使用操作系统的文件系统进行对象存储,每个数据库对…

Oracle表空间、用户详解

目录 新建连接三者关系表空间创建表空间修改表空间和数据文件修改数据文件容量新增表空间的数据文件重命名数据文件修改表空间状态修改数据文件状态 删除表空间查询 用户创建删除查询修改 新建连接 工具选择: 我们一般会选择一个工具来连接本地的Oracle&#xff0c…

49-Linux_malloc及4G虚拟空间分布

文章目录 malloc及4G虚拟空间分布1.malloc2.32位操作系统进程的4G虚拟空间分布1) 代码区(Text egment):2) 全局初始化数据区/静态数据区(Data Segment)3) 未初始化数据区(BSS):4) 堆区(heap):5) 栈区(stack): malloc及4G虚拟空间分…

(微信开发)Laya转发H5网页到微信,带图片

网页转发到微信时,带图片和自定义标题。2022年11月22号 关键解说 _wx.config({ debug: _wx_configdebug, appId: e.appId, timestamp: e.timestamp, nonceStr: e.nonceStr, signature: e.signature, jsApiList: [ // 所有要调用的 API 都要加到这个列表中 ‘onMen…

移动端H5页面开发的几种方法

单位: px 宽度百分比,高度px 在不同屏幕下的效果是不一样的,可用媒体查询(media)对不同宽度的手机进行适配,麻烦,不推荐使用 单位:rem 1、flexible 用法:https://blog.c…