Java设计文本编辑器_java实现一个文本编辑界面-程序员宅基地

技术标签: java  

@阿乐今天敲代码没


前言

利用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);

运行截图

文本编辑器

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45840993/article/details/118295946

智能推荐

visual studio:win7无法在线安装visual studio 2019_vsstudio不支持win7-程序员宅基地

文章浏览阅读427次。C:\Users\用户名\AppData\Local\Temp\VSFaultInfo\xxx(数字序列号)\ErrorInformationError InformationAppInsightsEvent Name = vs/setup/bootstrapper/error Description = Failure to download TelemetrySession = '0eaed727-b5bb-463e-a427-09c956d1b368' Sta..._vsstudio不支持win7

比较Hive数据库与MySQL数据库_hive sql和mysql区别-程序员宅基地

文章浏览阅读5.3k次,点赞4次,收藏16次。比较hive数据库与mysql数据库_hive sql和mysql区别

Oracle导入报错IMP-00058: 遇到 ORACLE 错误 12543,ORA-12543: TNS: 无法连接目标主机,IMP-00000: 未成功终止导入_imp-00058: 遇到 oracle 错误 376-程序员宅基地

文章浏览阅读439次,点赞5次,收藏6次。当我们使用Oracle的dmp文件来进行数据库导入时可能会遇到这样报错:IMP-00058: 遇到 ORACLE 错误 12543ORA-12543: TNS: 无法连接目标主机IMP-00000: 未成功终止导入。_imp-00058: 遇到 oracle 错误 376

ifix从sqlserver里读数据_国外自动化组态软件介绍:InTouch|WinCC|iFix|Citect-程序员宅基地

文章浏览阅读784次。在我国自动化控制领域应用较广泛的国外工业自动化组态软件有Wonderware公司InTouch、西门子公司Wincc、GE公司iFix和悉雅特公司Citet组态软件,昌晖仪表对这四种常用国外组态软件做相关介绍。InTouchInTouch组态软件是Wonderware公司产品。Wonderware公司成立于1987年,是英国Invensys公司的子公司,是在制造运营系统率先推出基于Microsof..._ifix 读取sqlserver数据显示

点位运动和直线插补运动_插补与点位混合使用-程序员宅基地

文章浏览阅读5.6k次。点位运动: 点与点的运动,机器人里术语是P,也就是P到P,机器人走的是平滑的路线,轨迹是不可预知的。直线插补运动: 如果你想走的是一条直线,那么就需要更改插补命令,也就是L到L,这样是你规定了机器人,按照2点一条直线的原则,机器人必须走的是你规定的直线。..._插补与点位混合使用

gcc使用率比较高选项_. v.,xccrxs.xd g gcc 。-程序员宅基地

文章浏览阅读143次。gcc有很多功能常用的选项,但我们常用的有过程选项、库选项、警告选项、优化选项,下面就以上选项用法进行讲解。_. v.,xccrxs.xd g gcc 。

随便推点

【学习笔记】编译原理——第一章 编译引论_设计一个编译器时,非必需的阶段是-程序员宅基地

文章浏览阅读1.5k次,点赞6次,收藏23次。系列文章目录【学习笔记】计算机网络第——第一章 编译引论文章目录系列文章目录前言程序设计语言与编译程序编译器的作用地位:编译程序的分类与执行:编译程序的表示编译程序的逻辑结构编译程序的结构与组织遍(Pass)一遍扫描的编译器两遍扫描的编译器思考题前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。程序设计语言与编译程序源语言:用来编写源程序的语言,一般是汇编语言或高级程序语言_设计一个编译器时,非必需的阶段是

kkt条件的4个条件解释?-程序员宅基地

文章浏览阅读2.1k次,点赞3次,收藏5次。互补松弛条件要求最优解x*和相应的拉格朗日乘子λ_i的乘积为零。综上所述,KKT条件包括稳定性条件、原始可行性条件、对偶可行性条件和互补松弛条件。当最优解满足这些条件时,它就是约束优化问题的一个潜在最优解。原始可行性条件要求最优解x*满足所有的不等式约束和等式约束。满足了约束条件的梯度为零,即在最优解处,目标函数在可行域内的变化趋势与约束条件保持一致。λ_i * g_i(x*) = 0,对于 i = 1, 2, …g_i(x*) ≤ 0,对于 i = 1, 2, …稳定性条件要求在最优解x。_kkt条件

kerberos认证协议浅析_kerberos协议需不需要时钟同步环境-程序员宅基地

文章浏览阅读7.6k次。1 引言在希腊神话中Kerberos是守护地狱之门的一条凶猛的三头神犬,而我们在本文中所要介绍的Kerberos认证协议是由美国麻省理工学院(MIT)首先提出并实现的,是该校雅典娜计划的一部分。这个定名是贴切的,因为Kerberos认证是一个三路处理过程,依赖称为密钥分发中心(KDC)的第三方服务来验证计算机相互的身份,并建立密钥以保证计算机间安全连接。本质上每台计算机分享KDC一个秘钥,而K_kerberos协议需不需要时钟同步环境

bzoj1050 [HAOI2006]旅行comf-程序员宅基地

文章浏览阅读46次。Description给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000)。给你两个顶点S和T,求一条路径,使得路径上最大边和最小边的比值最小。如果S和T之间没有路径,输出”IMPOSSIBLE”,否则输出这个比值,如果需要,表示成一个既约分数。 备注: 两个顶点之间可能有多条路径。Input...

致敬逆行者网页设计作品 大学生抗疫感动专题网页设计作业模板 疫情感动人物静态HTML网页模板下载-程序员宅基地

文章浏览阅读71次。 抗击疫情致敬逆行者感人类题材、致敬逆行者网页设计作品、大学生抗疫感动专题网页设计作业模板、等网站的设计与制作。️抗击疫情致敬逆行者感人类题材网页设计作品采用DIV CSS布局制作,共多个页面:网站首页、感动人物、动人瞬间、感人视频、感动图集、感动新闻页面。,使用CSS设置了网页背景颜色,制作了导航区域鼠标经过荧光效果。个别页面插入了感人MP4视频。作品代码采用学生简单水平制作,DIV命名合理。 一套优质的网页设计应该包含 (具体可根据个人要求而定)网站布局方面:计划采用目前主流的.....

Unity Editor(一)OnInspectorGUI的重写与面板的创建-程序员宅基地

文章浏览阅读277次。Unity Editor(一)OnInspectorGUI的重写与面板的创建 http://blog.csdn.net/husheng0/article/details/52568027 posted on 2017-05-12 14:27 jiahuafu 阅读(...) 评论(...) 编辑 收藏..._unity editor oninspectorgui