Java 输入框 undo
来源:互联网 发布:御坂美琴棒球帽淘宝 编辑:程序博客网 时间:2024/05/23 23:28
- package com.pass.component;
- import java.awt.event.ActionEvent;
- import javax.swing.AbstractAction;
- import javax.swing.JTextArea;
- import javax.swing.KeyStroke;
- import javax.swing.event.UndoableEditEvent;
- import javax.swing.event.UndoableEditListener;
- import javax.swing.text.Document;
- import javax.swing.undo.CannotRedoException;
- import javax.swing.undo.CannotUndoException;
- import javax.swing.undo.UndoManager;
- public class UndoTextArea extends JTextArea
- {
- private static final long serialVersionUID = 2622113838910292609L;
- UndoManager undo = new UndoManager();
- Document doc = getDocument();
- public void stopUndo()
- {
- // undo.die();
- undo.discardAllEdits();
- }
- public UndoTextArea()
- {
- doc.addUndoableEditListener(new UndoableEditListener()
- {
- public void undoableEditHappened(UndoableEditEvent e)
- {
- undo.addEdit(e.getEdit());
- }
- });
- addActionMap();
- }
- public void addActionMap()
- {
- getActionMap().put("Undo", new AbstractAction("Undo11")
- {
- private static final long serialVersionUID = 2434402629308759912L;
- public void actionPerformed(ActionEvent evt)
- {
- try
- {
- boolean b = undo.canUndo();
- // System.out.println("whether undo : "+b);
- if (b)
- {
- undo.undo();
- }
- }
- catch (CannotUndoException e)
- {
- }
- }
- });
- getInputMap().put(KeyStroke.getKeyStroke("control Z"), "Undo");
- getActionMap().put("Redo", new AbstractAction("Redo1111")
- {
- private static final long serialVersionUID = 5348330289578410517L;
- 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("Copy111")
- {
- private static final long serialVersionUID = -5151480809625853288L;
- public void actionPerformed(ActionEvent evt)
- {
- copy();
- }
- });
- getInputMap().put(KeyStroke.getKeyStroke("control C"), "Copy");
- getActionMap().put("Cut", new AbstractAction("Cut")
- {
- private static final long serialVersionUID = 7316612864835857713L;
- public void actionPerformed(ActionEvent evt)
- {
- cut();
- }
- });
- getInputMap().put(KeyStroke.getKeyStroke("control X"), "Cut");
- getActionMap().put("Paste", new AbstractAction("Paste111")
- {
- private static final long serialVersionUID = -3548620001691220571L;
- public void actionPerformed(ActionEvent evt)
- {
- paste();
- }
- });
- getInputMap().put(KeyStroke.getKeyStroke("control V"), "Paste");
- }
- }
测试类:FrameMain
- package com.pass.test;
- import java.awt.Color;
- import java.awt.GridLayout;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- import com.pass.component.UndoTextArea;
- public class FrameMain extends JFrame
- {
- private static final long serialVersionUID = 3526577815017461757L;
- public static void main(String[] args)
- {
- new FrameMain().launchFrame();
- }
- public void launchFrame(){
- JPanel pane=new JPanel();
- pane.setLayout(new GridLayout(2, 1));
- UndoTextArea txt1= new UndoTextArea();
- txt1.setBackground(new Color(255, 255, 100));
- txt1.setText("txt1");
- txt1.stopUndo();
- UndoTextArea txt2= new UndoTextArea();
- txt2.setBackground(new Color(255, 100, 100));
- txt2.setText("txt2");
- txt2.stopUndo();
- pane.add(txt1);
- pane.add(txt2);
- this.getContentPane().add(pane);
- this.setBounds(100, 100, 400, 400);
- this.setDefaultCloseOperation(3);
- this.setVisible(true);
- }
- }
运行FrameMain,弹出swing窗口
随便输入什么内容,然后Ctrl+Z 就可以进行测试了。
0 0
- Java 输入框 undo
- Java中undo功能实现
- UNDO
- Undo
- undo
- undo
- Undo
- undo
- Undo
- JAVA中的Redo与Undo功能的编程
- 实现编辑器的Undo Redo功能用Java来
- 实现编辑器的Undo Redo功能用Java来
- 使用Java来实现编辑器的Undo Redo功能
- java记事本编写中 实现撤销的undo用法问题
- Java输入
- java输入
- java输入
- java 输入
- VirtualBox\Genymotion--安装及问题解决
- VS2015 Xamarin.Forms使用经验1
- 关于SpringMvc中radiobutton默认值为空的问题
- untiy 第二个逗比又无聊的跑酷demo
- 机器学习基础 维基翻译 保序回归 随机森林 Pipeline处理 及简单的sklearn例子
- Java 输入框 undo
- 浅析代码风格
- Windows Server 2012 R2 DNS安装及调试详细指南
- Android Studio官方文档之在Android模拟器上运行App(一)
- C#特性的分类
- GitHub上整理的一些工具[转载]
- java反射技术访问私有方法
- MS SQL执行大脚本文件时,提示“内存不足”的解决办法
- 在tomcat中如何配置访问的时候不需要在URL中加入项目名