java undo_用JAVA实现Undo、Redo,Copy、Paste、Cut_java
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相关推荐
- 由java中深度复制一伸出Collections.copy的使用
今天在学习集合中 有关对象的深度拷贝和浅拷贝 的时候,像拷贝一个ArrayList对象到另一个ArrayList对象中,正好发现Collections有一个copy方法.可是不好用啊总是报错.查看ap ...
- 使用 Maven 执行 java main class(java应用程序)
今天突然想练练自己脱离IDE的 hard code 水平,于是只是用 maven & UE 做了一些练习,突然发现了一个问题,如何使用maven指令执行 java main 呢?一开始想了一个 ...
- Java 8 到 Java 14,改变了哪些你写代码的方式?
前几天,JDK 14 正式发布了,这次发布的新版本一共包含了16个新的特性. 其实,从Java8 到 Java14 ,真正的改变了程序员写代码的方式的特性并不多,我们这篇文章就来看一下都有哪些. La ...
- java dbcursor_优化JAVA查询Mongodb数量过大,查询熟读慢的方法
前言:2018年的时候优化了一个项目,该项目从MOngodb中获取数据的时候一次去十万百万千万的数据过慢,往往每次都要二十秒,三十秒,今天提出了一个代码优化的方案 项目查从mongodb中获取数据:代 ...
- 【java】关于Java NIO的一切
1.概述 概述:关于Java NIO的『一切』 建议看原文 太长了 本文译自Jakob Jenkov的Java NIO.注意,并非逐字翻译,删除了原文中碎碎念的部分,有些地方也加入了自己的理解. Ja ...
- java取得泛型,Java取得泛型类型
Java获得泛型类型 Java代码 /* * Copyright 2010 Sandy Zhang * * Licensed under the Apache License, Version 2.0 ...
- java implements this,Java – 何时使用“this”关键字
但是如果我将构造函数中的语句更改为Java,则Java足够聪明以知道发生了什么 bar = bar; 假! 它编译,但它不会做你认为它的作用! 至于何时使用它,很多是个人喜好. 我喜欢在我的公共方法中 ...
- Java属性文件– java.util.Properties
Java properties file are used to store key-value pair configuration. java.util.Properties class is u ...
- 71.JAVA编程思想——JAVA与CGI
71.JAVA编程思想--JAVA与CGI Java 程序可向一个服务器发出一个CGI 请求,这与HTML 表单页没什么两样.而且和HTML 页一样,这个请求既可以设为GET(下载),亦可设为POST ...
最新文章
- 多媒体课程设计android,基于Android的多媒体播放器(课程设计)报告.doc
- linux下电池测试软件,你们要的App电量分析测试来了
- python字典会自动排序_python中字典不自动排序的用法
- 学习Python要多久 要如何学习
- go 查找模块位置_如何使用Go语言插件功能?
- NetMeeting服务
- 大白菜超级U盘启动盘制作
- 创建通用 macOS 二进制文件
- 越过山丘才发现无人等候 倒计时84
- 55ide游戏引擎(原赤兔引擎)教程1:认识引擎
- 一幅真实的产品世界全景图,产品小白向上突破必看!
- 数组和链表的增删改查速度比较
- free_rtos系统基本配置
- LDA: 从头到尾彻底理解LDA (Latent Dirichlet Allocation)
- Android 开发中Layout_Margin与padding的区别以及Layout_gravity与gravity的区别
- gdb调试[奇牛学院]
- 投资30亿美元 IBM启动云计算大数据芯片研究计划
- P2615 神奇的幻方
- 【接口协议】FPGA 驱动 VGA 显示实验(二)实验设计部分
- flutter获取验证码输入框组件
热门文章
- php+easyui+上传文件,easyui 上传文件代码
- IDEA中注解注释快捷键及模板
- Java面向对象(11)--多态性
- 怎么修改提交git是的用户名_git 修改提交邮箱以及用户名-亲测
- C++输出一句话里面第一个单词并大写
- JAVA中的适配器应用_Java适配器模式应用之电源适配器功能详解
- js 加总数组中某一列_JS数组求和的常用方法实例小结
- python知识点智能问答_基于知识图谱的智能问答机器人
- win10电脑开机密码忘了怎么办_Mac电脑忘记开机密码怎么办?Mac开机密码快速恢复方法...
- 11.【原创】chrom文件上传后,手动释放内存