java实现文本编辑器

article/2025/11/9 10:50:43
     利用swing组件JEditText实现复制,粘贴,剪切功能,JEditText组测MouseListener,实现JPopupMenu右键弹出菜单,依次为JMenuItem,openButton,saveButton注册ActionListener,实现点击事件。

文本编辑器

Word.java:

import javax.swing.*;
import javax.swing.JComponent.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.awt.Component.*;
//文本编辑器,打开.保存.右键复制粘贴剪切功能
//java.awt 与 java.awt.event 不是一个类 
//
public class Word implements MouseListener,ActionListener{JFrame frame;JPopupMenu popMenu;JPanel panel;JEditorPane editText;JButton openButton;JButton saveButton;JMenuItem paste;JMenuItem copy;JMenuItem cut;JMenuBar menuBar;FileDialog fileDialog; String path;//要保存/打开的文件路径String name;//要保存/打开的文件名
//  JMenuItem delete;public static void main(String[] args){Word word=new Word();
}
//初始化界面public Word(){frame=new JFrame();panel=new JPanel();editText=new JEditorPane();popMenu=new JPopupMenu();Font font=new Font("宋体",Font.BOLD,20);openButton=new JButton("open");openButton.setFont(font);saveButton=new JButton("save");saveButton.setFont(font);panel.setLayout(null);Color color=new Color(191,210,200);panel.setBackground(color);paste=new JMenuItem("paste");copy=new JMenuItem("copy");cut=new JMenuItem("cut");
//      delete=new JMenuItem("delete");
//try{
//      String pathString = "/home/zx/邯郸-刘书锋太极体.ttf";//              Font editFont = Font.createFont(Font.BOLD, new File(pathString));
//      editText.setFont(editFont);
//}catch(FontFormatException|IOException fe){
//      fe.printStackTrace();
//}     
//      Font editFont=new Font ("宋体",Font.BOLD,20);editText.setBackground(color);editText.setBounds(0,40,780,760);editText.setFont(font);editText.addMouseListener(this);popMenu.add(paste);popMenu.add(copy);popMenu.add(cut);openButton.addActionListener(this);saveButton.addActionListener(this);
//      popMenu.add(delete);paste.addActionListener(this);cut.addActionListener(this);copy.addActionListener(this);
//      delete.addActionListener(this);//button 设置大小太小会导致显示不出来文字openButton.setBounds(0,10,80,30);saveButton.setBounds(700,10,80,30);saveButton.setBackground(color);openButton.setBackground(color);panel.add(editText);panel.add(openButton);panel.add(saveButton);panel.add(popMenu);frame.setSize(780,800);frame.getContentPane().add(panel);frame.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}
//粘贴public void paste(){System.out.println("paste");editText.paste();
}
//复制public void copy(){System.out.println("copy");editText.copy();
}
//剪切public void cut(){System.out.println("cut");editText.cut();}
//打开文件public void open(){System.out.println("Open file!");fileDialog=new FileDialog(frame,"打开文件",FileDialog.LOAD);fileDialog.setVisible(true);path=fileDialog.getDirectory();name=fileDialog.getFile();read();
}
//保存文件public void save(){System.out.println("Save File!");fileDialog=new FileDialog(frame,"保存文件",FileDialog.SAVE);fileDialog.setVisible(true);path=fileDialog.getDirectory();name=fileDialog.getFile();write();}
//读文件public void read(){try{File read=new File(path,name);BufferedReader reader=new BufferedReader(new FileReader(read));//string 类无append()方法StringBuilder builder=new StringBuilder();String line;while((line=reader.readLine())!=null){builder.append(line+"\n");System.out.println(line);
}editText.setText(builder.toString());reader.close();//File类无close()
}catch(IOException e){e.printStackTrace();
//作用域到括号截至  read 找不到
//  read.close();
}}
//写文件public void write(){try{File writeFile=new File(path,name);BufferedWriter write=new BufferedWriter(new FileWriter(writeFile));write.write(editText.getText());write.close();
}catch(IOException e){e.printStackTrace();
//      writeFile.close();
}}
//鼠标点击事件public void mouseClicked(MouseEvent e){}public void mouseEntered(MouseEvent e){}public void mouseExited(MouseEvent e){}public void mousePressed(MouseEvent e){if(e.getButton()==MouseEvent.BUTTON3)popMenu.show(e.getComponent(),e.getX(),e.getY());
}public void mouseReleased(MouseEvent e){}
//MouseEvent 有什么方法可以返回调用组件的String 或代号?
//用ActionEvent的话不能屏蔽右键选择    
//  class SpecialListener implements MouseListener{public void actionPerformed(ActionEvent e){System.out.println("我要开始比较啦!");//      if(e.getButton()==MouseEvent.BUTTON3){String which=e.getActionCommand();switch(which){case "paste":paste();break;case "copy":copy();break;case "cut":cut();break;case "open":open();break;case "save":save();}
}}
后续功能:改变字体,插入图片

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

相关文章

JAVA实现简易文本编辑器设计

废话不多说直接上代码 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.plaf.FontUIResource; import javax.swing.text.Document; import java…

使用文本编辑器开发一个Java程序的详细步骤

概述 前提: 在学习本博文之前,您需要搭建好Java环境,其中包括1.JDK(Java开发工具箱)的下载;2.JDK环境变量的设置。 就目前对于Java程序的开发现状看的话,都是采用的流行的开发工具,其优点对于开发人员来说…

java 常用富文本编辑器_常用的六个富文本编辑器

1::功能齐全 tinymce|TinyMCE | The Most Advanced WYSIWYG HTML Editor TinyMCE是一个轻量级的基于浏览器的所见即所得编辑器,由JavaScript写成。它对IE6和Firefox1.5都有着非常良好的支持。 图片发自简书App 2:百度 ueditor|UEditor - 首页…

Java实现百度富文本编辑器UEditor

说起来 实现百度富文本编辑器也是比较简单,主要就是 读取 config.json 但是里面的坑也比较大 下面是我的步骤 以及我遇坑的过程 准备引入的jar包 这两个包找不到的话 可以去官网、也可以加群Java交流群,在群文件自行下载: QQ群:808249297 …

富文本编辑器在Java中使用

一、ckeditor 1) 下载ckeditor_3.6.2.zip和ckeditor-java-core-3.5.3.zip两个压缩文件 下载地址:http://ckeditor.com 2) 解压缩文件ckeditor_3.6.2.zip和ckeditor-java-core-3.5.3.zip两个文件, 在ckeditor_3.6.2文件中有ckeditor文件…

(JAVA)利用GUI编写简单文本编辑器

今天我们来尝试写一段代码,编写一个简单的文本编辑器,一起来看看吧! 首先我们需要用到Java中的继承(extends)、接口(implements)。我们将其分为两个文件:一个文件中是所有的布局和逻…

Java设计文本编辑器

阿乐今天敲代码没 Java设计文本编辑器 前言一、实现功能二、扼要代码1.界面程序设计2.文件菜单设计3.编辑菜单栏设计4.格式菜单栏设计 运行截图 前言 利用Java设计一个文本编辑器。 提示:以下是本篇文章正文内容,下面案例可供参考 一、实现功能 该简易…

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绘画打卡】| 用漫画生成器绘制宅男最爱的二次元美女

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