programlover原作

package clipborad;

import javax.swing.JTextArea;

import java.awt.datatransfer.*;

import java.awt.*;

import javax.swing.*;

import java.io.*;

import javax.swing.undo.*;

http://www.gaodaima.com/64851.html用JAVA实现Undo、Redo,Copy、Paste、Cut_java

import javax.swing.text.*;

import javax.swing.event.*;

import java.awt.event.*;

/**

* Title: 用JAVA实现Undo、Redo,Copy、Paste、Cut

* Description:用JAVA实现Undo、Redo,Copy、Paste、Cut

* Copyright: Copyright (c) 2001

* Company:

* @author: 彭建雄

* @version 1.0

*/

public class ClipTextArea extends JTextArea implements ClipboardOwner{

Clipboard strBoard = this.getToolkit().getSystemClipboard();

UndoManager undo = new UndoManager();

Document doc = getDocument();

public ClipTextArea() {

doc.addUndoableEditListener(new UndoableEditListener(){

public void undoableEditHappened(UndoableEditEvent e) {

doc_addedit(e);}

});

addActionMap();

}

public void addActionMap()

{

getActionMap().put("Undo", new AbstractAction("Undo") {

public void actionPerformed(ActionEvent evt) {

try {

if (undo.canUndo()) {

undo.undo();

}

} catch (CannotUndoException e) {

}

}

});

getInputMap().put(KeyStroke.getKeyStroke("control Z"), "Undo");

getActionMap().put("Redo",new AbstractAction("Redo") {

public void actionPerformed(ActionEvent evt) {

try

{

if (undo.canRedo()) {

undo.redo();

}

} catch (CannotRedoException e) {

}

}

});

getInputMap().put(KeyStroke.getKeyStroke("control R"), "Redo");

getActionMap().put("Copy",new AbstractAction("Copy") {

public void actionPerformed(ActionEvent evt) {

copy();

}

});

getInputMap().put(KeyStroke.getKeyStroke("control C"), "Copy");

getActionMap().put("Cut",new AbstractAction("Cut") {

public void actionPerformed(ActionEvent evt) {

cut();

}

});

getInputMap().put(KeyStroke.getKeyStroke("control X"), "Cut");

getActionMap().put("Paste",new AbstractAction("Paste") {

public void actionPerformed(ActionEvent evt) {

paste();

}

});

getInputMap().put(KeyStroke.getKeyStroke("control V"), "Paste");

}

public void copy()

{

String sCopy = getSelectedText();

if (sCopy != null)

{

StringSelection sSelection = new StringSelection(sCopy);

strBoard.setContents(sSelection,this);

}

}

public void cut()

{

String sCopy = getSelectedText();

if (sCopy != null)

{

StringSelection sSelection = new StringSelection(sCopy);

strBoard.setContents(sSelection,this);

this.replaceSelection("");

}

}

public void paste()

{

Transferable sTransf = strBoard.getContents(this);

if (sTransf!=null)

{

try

{

String sPaste = (String)sTransf.getTransferData(DataFlavor.stringFlavor);

this.replaceRange(sPaste,getSelectionStart(),getSelectionEnd());

}

catch(UnsupportedFlavorException e)

{

}

catch(IOException ioe)

{

}

}

}

public void lostOwnership(Clipboard clipboard,Transferable contents)

{

}

void doc_addedit(UndoableEditEvent e)

{

undo.addEdit(e.getEdit());

}

}

欢迎大家阅读《用JAVA实现Undo、Redo,Copy、Paste、Cut_java》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码

微信 赏一包辣条吧~

支付宝 赏一听可乐吧~

java undo_用JAVA实现Undo、Redo,Copy、Paste、Cut_java相关推荐

  1. 由java中深度复制一伸出Collections.copy的使用

    今天在学习集合中 有关对象的深度拷贝和浅拷贝 的时候,像拷贝一个ArrayList对象到另一个ArrayList对象中,正好发现Collections有一个copy方法.可是不好用啊总是报错.查看ap ...

  2. 使用 Maven 执行 java main class(java应用程序)

    今天突然想练练自己脱离IDE的 hard code 水平,于是只是用 maven & UE 做了一些练习,突然发现了一个问题,如何使用maven指令执行 java main 呢?一开始想了一个 ...

  3. Java 8 到 Java 14,改变了哪些你写代码的方式?

    前几天,JDK 14 正式发布了,这次发布的新版本一共包含了16个新的特性. 其实,从Java8 到 Java14 ,真正的改变了程序员写代码的方式的特性并不多,我们这篇文章就来看一下都有哪些. La ...

  4. java dbcursor_优化JAVA查询Mongodb数量过大,查询熟读慢的方法

    前言:2018年的时候优化了一个项目,该项目从MOngodb中获取数据的时候一次去十万百万千万的数据过慢,往往每次都要二十秒,三十秒,今天提出了一个代码优化的方案 项目查从mongodb中获取数据:代 ...

  5. 【java】关于Java NIO的一切

    1.概述 概述:关于Java NIO的『一切』 建议看原文 太长了 本文译自Jakob Jenkov的Java NIO.注意,并非逐字翻译,删除了原文中碎碎念的部分,有些地方也加入了自己的理解. Ja ...

  6. java取得泛型,Java取得泛型类型

    Java获得泛型类型 Java代码 /* * Copyright 2010 Sandy Zhang * * Licensed under the Apache License, Version 2.0 ...

  7. java implements this,Java – 何时使用“this”关键字

    但是如果我将构造函数中的语句更改为Java,则Java足够聪明以知道发生了什么 bar = bar; 假! 它编译,但它不会做你认为它的作用! 至于何时使用它,很多是个人喜好. 我喜欢在我的公共方法中 ...

  8. Java属性文件– java.util.Properties

    Java properties file are used to store key-value pair configuration. java.util.Properties class is u ...

  9. 71.JAVA编程思想——JAVA与CGI

    71.JAVA编程思想--JAVA与CGI Java 程序可向一个服务器发出一个CGI 请求,这与HTML 表单页没什么两样.而且和HTML 页一样,这个请求既可以设为GET(下载),亦可设为POST ...

最新文章

  1. 多媒体课程设计android,基于Android的多媒体播放器(课程设计)报告.doc
  2. linux下电池测试软件,你们要的App电量分析测试来了
  3. python字典会自动排序_python中字典不自动排序的用法
  4. 学习Python要多久 要如何学习
  5. go 查找模块位置_如何使用Go语言插件功能?
  6. NetMeeting服务
  7. 大白菜超级U盘启动盘制作
  8. 创建通用 macOS 二进制文件
  9. 越过山丘才发现无人等候 倒计时84
  10. 55ide游戏引擎(原赤兔引擎)教程1:认识引擎
  11. 一幅真实的产品世界全景图,产品小白向上突破必看!
  12. 数组和链表的增删改查速度比较
  13. free_rtos系统基本配置
  14. LDA: 从头到尾彻底理解LDA (Latent Dirichlet Allocation)
  15. Android 开发中Layout_Margin与padding的区别以及Layout_gravity与gravity的区别
  16. gdb调试[奇牛学院]
  17. 投资30亿美元 IBM启动云计算大数据芯片研究计划
  18. P2615 神奇的幻方
  19. 【接口协议】FPGA 驱动 VGA 显示实验(二)实验设计部分
  20. flutter获取验证码输入框组件

热门文章

  1. php+easyui+上传文件,easyui 上传文件代码
  2. IDEA中注解注释快捷键及模板
  3. Java面向对象(11)--多态性
  4. 怎么修改提交git是的用户名_git 修改提交邮箱以及用户名-亲测
  5. C++输出一句话里面第一个单词并大写
  6. JAVA中的适配器应用_Java适配器模式应用之电源适配器功能详解
  7. js 加总数组中某一列_JS数组求和的常用方法实例小结
  8. python知识点智能问答_基于知识图谱的智能问答机器人
  9. win10电脑开机密码忘了怎么办_Mac电脑忘记开机密码怎么办?Mac开机密码快速恢复方法...
  10. 11.【原创】chrom文件上传后,手动释放内存