Java设计文本编辑器

Java设计文本编辑器阿乐今天敲代码没 Java 设计文本编辑器前言一 实现功能二 扼要代码 1 界面程序设计 2 文件菜单设计 3 编辑菜单栏设计 4 格式菜单栏设计运行截图前言利用 Java 设计一个文本编辑器 提示 以下是本篇文章正文内容 下面案例可供参考一 实现功能该简易记事本主要可实现以下几个功能 1 菜单中有 文件 编辑 格式 三个主菜单 2 文件 有 打开 保存 退出 三个子菜单 分别用于打开文件 保存文件 退出记事本 3 编辑 中有 剪切 复制 粘贴 三个子菜单 用于剪

@阿乐今天敲代码没


前言

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

运行截图

文本编辑器

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233713.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • spi协议详解_spi传输协议

    spi协议详解_spi传输协议说明.文章摘自:SPI协议及其工作原理浅析 http://bbs.chinaunix.net/thread-1916003-1-1.html一、概述.    SPI,SerialPerripheralInterface,串行外围设备接口,是Motorola公司推出的一种同步串行接口技术.SPI总线在物理上是通过接在外围设备微控制器(PICmicro)上面的微处

    2022年10月15日
    4
  • js 双向绑定数据

    js 双向绑定数据

    2021年6月13日
    113
  • python手机端秒杀_python实现淘宝秒杀脚本

    python手机端秒杀_python实现淘宝秒杀脚本本文实例为大家分享了python实现淘宝秒杀脚本的具体代码,供大家参考,具体内容如下1.安装pycharm。网上教程很多。2.安装Selenium库。Selenium支持很多浏览器,我选择的是Firefox浏览器。因为我这里是Python3环境,自带的又pip,所以安装selenium直接使用pip安装安装方法:–打开cmd;–输入命令进入Python36/Scripts(找到下图的目录)…

    2022年5月30日
    24
  • 什么是互质_数组转集合list

    什么是互质_数组转集合list给定 n 个正整数,将它们分组,使得每组中任意两个数互质。至少要分成多少个组?输入格式第一行是一个正整数 n。第二行是 n 个不大于10000的正整数。输出格式一个正整数,即最少需要的组数。数据范围1≤n≤10输入样例:614 20 33 117 143 175输出样例:3#include<bits/stdc++.h>using namespace std;const int N = 1e2 + 10;int a[N],g[N][N];int n;int

    2022年8月9日
    7
  • viewpager实现画廊(中间图片全部显示,左右显示一部分b布局)无限轮播效果「建议收藏」

    viewpager实现画廊(中间图片全部显示,左右显示一部分b布局)无限轮播效果「建议收藏」一、布局xmlversion=”1.0″encoding=”utf-8″?>RelativeLayoutxmlns:android=”http://schemas.android.com/apk/res/android”    android:id=”@+id/pager_layout”    android:layout_width=”match_

    2022年6月7日
    38
  • 漫谈数据仓库之拉链表(原理、设计以及在Hive中的实现)

    漫谈数据仓库之拉链表(原理、设计以及在Hive中的实现)0x00前言本文将会谈一谈在数据仓库中拉链表相关的内容,包括它的原理、设计、以及在我们大数据场景下的实现方式。全文由下面几个部分组成:先分享一下拉链表的用途、什么是拉链表。通过一些小的使用场景来对拉链表做近一步的阐释,以及拉链表和常用的切片表的区别。举一个具体的应用场景,来设计并实现一份拉链表,最后并通过一些例子说明如何使用我们设计的这张表(因为现在Hive的大规模使用

    2022年10月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号