用JAVA实现Undo、Redo,Copy、Paste、Cut

移动App中接入微信支付和支付宝支付 小摊小贩们在线下交易一般无需接入微信支付,只需要向别人出示自己的付款码就行。因为一手交钱,一手交货,你不付钱,人家不会给你商品。但在网上,要实现无人值守,别人扫码付了款,平台得自动知道,然后再发货。所以必须接入微信支付。申请地址:https://mp.weixin.qq.com。关联一个appId,搜索appId, 然后提交申请。首先你要有一个微信账号,然后申请服务号或公众号。微信支付必须是企业主体,要有营业执照才能申请。在公众号侧,菜单”微信支付“里确认申请。本文简单整理了一下该过程,备忘。 阅读详情

package clipborad;

import javax.swing.JTextArea;
import java.awt.datatransfer.*;
import java.awt.*;
import javax.swing.*;
import java.io.*;
import javax.swing.undo.*;
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编写记事本的撤销功能 本资源含有一个用java写好的记事本,主要是针对frame中的undo功能。 立即下载

相关推荐

Java 编辑器Undo Redo

实现Java中编辑器的Undo、Redo操作,功能比较强大

vi 使用技巧(二): copy, paste, delete, 块编辑,redo/undo

1. copy and paste    yy : copy 光标所在的行  nyy: copy n line    yw: copy 光标所在的单词  nyw: copy 光标所在位置到其后的n 个单词(未必是同一行)    y$:  copy 光标所在位置到行尾($是行尾的标示)  ny$:  copy 光标所在位置之后的n行(包括当前行,当前行=y$)      p:  paste 在光标所

埋头学习 | 踏实 | 刻意训练 | 原创 2557

文件切割小工具textCut

自己做的文本切割的例子,目前只支持GBK。给我自己手机看电子书用的。切割成每个文件500k

java复制粘贴剪切方法代码_java_java简单实现复制 粘贴 剪切功能代码分享,废话不多说,直接上代码,小 - phpStudy...

java简单实现复制 粘贴 剪切功能代码分享废话不多说,直接上代码,小伙伴们仔细看下注释吧。/*简单的复制 剪切 粘贴 功能操作:复制测试: 输入文本选择文本,点击复制,然后将光标放在右边的TextArea,点击粘贴剪切测试:输入文本选择文本,然后将光标放在右边的TextArea,点击剪切*/import javax.swing.*;import java.awt.*;import java.aw...

weixin_33982355的博客 547

工程伦理ppt

工程伦理学 第一章 工程与伦理 1.1 如何理解工程 一、技术与工程的区别 二、技术与工程的联系 三、工程的定义 五、工程具有不确定性和探索性 六、理解工程活动的7个维度 1.2 如何理解伦理 一、道德与伦理 二、不同的伦理立场 三、伦理困境与伦理选择 1.3 工程实践中的伦理问题 一、工程活动中的行动者网络(具有动态性和网络性) 二、主要的工程伦理问题 三、工程伦理问题的特点 1.4 如何处理工程实践中的伦理问题 一、工程实践中伦理问题的辨识 二、处理工程伦理问题的基本原则 三、应对工程伦理问题的基本思路

weixin_51656605的博客 7万+

【HarmonyOS 5】鸿蒙APP使用【团结引擎Unity】开发的案例教程

以下是基于团结引擎开发鸿蒙Unity应用的详细案例教程,整合环境配置、工程适配、跨语言通信等核心环节。

2201_75709314的博客 2483

java undo_月光软件站 - 编程文档 - Java - 用JAVA实现Undo、Redo,Copy、Paste、Cut

package clipborad;import javax.swing.JTextArea;import java.awt.datatransfer.*;import java.awt.*;import javax.swing.*;import java.io.*;import javax.swing.undo.*;import javax.swing.text.*;import javax.s...

weixin_32927369的博客 222

手把手教你用Siemens EDA破解工具搞定PADs VX2.7安装与卡死问题

本文详细介绍了如何使用Siemens EDA工具解决PADs VX2.7的安装与卡死问题。从License配置到性能调优,提供全面的解决方案,帮助工程师高效完成电子设计自动化任务。特别针对常见的卡顿现象,给出了输入法兼容性调整、图形性能优化等实用技巧。

k8l9m0n的博客 554

用JAVA实现Undo、Redo,Copy、Paste、Cut (转)

用JAVA实现Undo、Redo,Copy、Paste、Cut (转)[@more@]package clipborad; import Javax.swing.JTextArea;import java.awt.datatr...

csd3176的博客 384

密码学实战:如何利用生日攻击破解哈希函数

本文深入探讨了生日攻击在密码学中的应用及其对哈希函数的威胁。通过分析生日悖论的数学原理,揭示了哈希函数在实际应用中的脆弱性,并提供了防御策略,如升级哈希算法、正确使用加盐技术等。文章结合实战案例,帮助开发者理解如何有效防范此类攻击,确保系统安全。

weixin_42530732的博客 192

OCS2 入门教程(一)

OCS2 是专为切换系统优化控制(ptimalontrol forwitchedystems,OCS2)定制的 C++ 工具箱。该工具箱提供以下算法的高效实现:SLQ:连续时间域约束 DDPiLQR:离散时域约束 DDPSQP:基于 HPIPM 的多重打靶算法IPM: 基于非线性内点法的多重搜索算法SLP:基于 PIPG 的顺序线性规划算法OCS2 通过增强拉格朗日法(Augmented Lagrangian)或松弛障碍法(relaxed barrier methods)处理一般路径约束。

机器人控制与仿真应用 7837

NSMutableArray复杂对象排序

1、   说明:以下程序中NSMutableArray数组中包含的对象是NSDictionary,而下面要实现的排序就是根据NSDictionary中的key代表的value进行比较而排序,如下: code //1.对字段的封装 - (NSDictionary *)formateDicWithName:(NSString *)name                  

zhuweideng的博客 488

基于Python的链家与贝壳租房数据爬取及城市性价比分析

本文通过Python爬虫技术,实现对链家和贝壳平台全国主要城市租房数据的采集与分析。研究使用requestsSelenium和Playwright等现代化爬虫工具,结合代理IP和验证码识别技术应对反爬机制。采集的数据经过清洗后,从多维度分析不同城市租房市场的价格分布、面积特征和性价比差异,并使用可视化技术展示分析结果。本研究为租房者提供决策参考,也为租房市场研究提供数据支撑。关键词:Python爬虫;租房数据;数据分析;链家;贝壳。

2201_76125261的博客 530

用java实现编辑器的Undo Redo功能

用java实现编辑器的Undo Redo功能,非常的方便,下面是一个实现这个功能的类,import java.awt.event.ActionEvent;import javax.swing.AbstractAc……

rockylinux的专栏 687

量化交易之因子分析大全

在机器学习项目中,特征工程是非常重要的。在量化研究中也是如此。本文将量化研究中常用到的特征,也就是因子进行详细收纳,并给出推导公式和实现代码。

夏之微风的博客 2282

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

java 实现文件/文件夹复制、剪切、删除

package com.file; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /* * Java实现文件复制、剪切、删除操作 * 文件指文件或文件夹 * 文件分割符统一用"//" ...

蜗牛/ 的博客 1580

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

java中cut是什么意思_cut和paste用法

cut用来从标准输入或文本文件中剪切列或域。剪切文本可以将之粘贴到一个文本文件==========================================================================================================cut一般格式为:cut [options] file1 file2下面介绍其可用参数-c list 指定剪...

weixin_26735445的博客 941

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

paste的使用

paste的作用       用于将两个文件进行文本合并的工具。它合并的方式比较特殊,比如说两个文件的合并,不是将一个文件搬移到另一个文件的后边,而是将文件并行展出,也就是说,它将一行分为两部分(两列),前一列放第一个文件,后一列放第二个文件。那么合并后的第一行有两列,分别放的两个文件的第一行。可能会有人认为,合并后将两个文件的行数相同的行存放到合并后的同一行中,即两行存放于一行,有可能会造成那一...

半暖的博客 9827

Linux命令——cut命令学习

一、定义 正如其名,cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut是以每一行为一个处理对象的,这种机制和sed是一样的。 2、剪切依据 cut命令主要是接受三个定位方法: 第一,字节(bytes),用选项-b 第二,字符(characters),用选项-c 第三,域(fields),用选项-f 例: 一,按字节cut: 注...

a12141986的博客 491

java 复制 粘贴_JAVA中实现剪切,复制,粘贴功能

要用到java.awt.datatransfer包中的Clipboard类import java.awt.*;import java.awt.event.*;import java.awt.datatransfer.*;public class Test extends Frame implements ActionListener{ MenuBar menubar; Menu menu;Menu...

weixin_30521175的博客 365

Java实现复制黏贴

第一种方式:     利用Clipboard类来实现简单的复制黏贴,主要用在后台   代码如下: public static void main(String[] args) { Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();  //得到系统剪贴板           String text =

luopengdlc的专栏 4174

aop point-cut表达式

好多博客写的云里雾里,大多都有一点毛病。大家还是以官网为准 @官网文档 官网截图 modifiers-pattern:修饰符 ret-type-pattern:方法返回类型 declaring-type-pattern:指定方法所属的类 name-pattern:方法名 param-pattern:参数列表 throws-pattern:抛出的异常 All parts ...

weixin_34004576的博客 493

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 288
上一篇: Delphi命令行参数
下一篇: 用Servlvet实现文件上传的功能
programlover
博客等级 码龄26年 1粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值