实现文本的复制和粘贴、文本的撤销和恢复(Swing JTextArea)
来源:互联网 发布:我知这世界 编辑:程序博客网 时间:2024/05/27 20:52
实现文本的复制和粘贴、文本的撤销和恢复(Swing JTextArea)
文本的撤销和恢复是通过 addUndoableEditListener(UndoableEditListener listener)这个方法来注册实现的。只要是Document类及其子类都可以注册撤销和恢复的监听来实现文档的撤销和恢复,这是非常容易实现的。所以JTextComponent类以及其子类,JTextField,JTextArea,JTextPane都可以实现撤销和恢复功能。因为他们都可以获得Document实例,通过这个方法----getDocument();
UndoManager 管理UndoableEdit
列表,提供撤消或恢复适当编辑的方法。有两个方法可以将编辑添加到UndoManager
。直接使用addEdit
方法添加编辑,或将UndoManager
添加到支持UndoableEditListener
的 bean[实体]。下面的例子创建了一个UndoManager
并将它作为UndoableEditListener
添加到JTextField
:
UndoManager undoManager = new UndoManager(); JTextField tf = ...; tf.getDocument().addUndoableEditListener(undoManager);//给文本[行、区]添加---可撤销监听;当执行撤销操作时,则调用undoManager的undo() 之所以要写getDocument()是因为注册侦听器的对象是文本,不是文本框。addUndoableEditListener(undoManager)的作用是为tf的文本注册侦听器或者tf.getDocument().addUndoableEditListener(newUndoableEditListener(){ //注册撤销可编辑监听器 public void undoableEditHappened(UndoableEditEvent e) { undoManager.addEdit(e.getEdit()); } }); ......以上2种方式:是作用于文本text,设置文本为“可撤销编辑”[文本text可以是JTextField,JTextArea,JTextPane]...........................................................................................................tf.addActionListener(new ActionListener() {//撤销 编辑---
@Override
public void actionPerformed(ActionEvent arg0) {
if(undomg.canUndo()) { //撤销
undoManager.undo();
}
if(undomg.canRedo()) { //恢复
undoManager.redo();
}
}
});
其实对于文档编辑的撤销和恢复是非常简单的,只要获取getDocument()就可以实现监听了,在监听方法中添加编辑数据就可以了,
UndoManager .addUndoableEditListener(UndoableEditEvent.getEdit());
在就是在撤销操作中调用UndoManager .undo()就可以了,还有canUndo()这个方法和重要,用于判断undo操作是否成功,如果成功就返回true。
在恢复操作中调用UndoManager .redo()可以实现恢复,还有canRedo()方法判断redo操作是否成功,如果成功返回true。
实现文本的复制和粘贴
只要是JTextComponent类以及其子类都具备文本的复制和粘贴功能。是使用了下面的三个方法。
copy():复制方法,可以通过鼠标来选定文本来复制。通过复制到的数据是放到剪贴板上的,和操作系统相互应的。也就是说通过复制操作系统也可以使用这个剪贴板中的数据。
cut():剪切
paste():粘贴
还有一个有用的方法:
getSelectedText():返回选择的内容,如果用户没有选中任何内容或者文档中没有一个内容就返回null,如果有就返回String
- 实现文本的复制和粘贴、文本的撤销和恢复(Swing JTextArea)
- java文本的撤销和恢复
- Android的文本和输入---复制和粘贴(一)
- Android的文本和输入---复制和粘贴(二)
- Android的文本和输入---复制和粘贴(三)
- Android的文本和输入---复制和粘贴(四)
- Android的文本和输入---复制和粘贴(五)
- Android的文本和输入---复制和粘贴(六)
- 如何实现linux和window之间的文本相互复制(即共享粘贴板)
- 虚拟机和主机之间文本的复制和粘贴
- Android的文本和输入---复制和粘贴
- 实现文本的 复制 粘贴 的创建
- Clipboard实现文件,文本的"复制","粘贴"
- 安卓文本复制粘贴的实现
- 如何复制和粘贴命令行里的文本
- 具备复制粘贴功能的JTextField和JTextArea
- 文本和输入:复制和粘贴
- Swing组件的使用---文本框(JTextField)与文本区(JTextArea)
- React 试用
- Ansible 2.0 API解析
- Android 开源项目浅读-------SwipeMenuListView-重写-第二章,菜单显示
- (OK) NS-3—LXC-(Docker)—MANET——HOWTO Use Linux Containers to set up virtual networks
- Android 学习资料
- 实现文本的复制和粘贴、文本的撤销和恢复(Swing JTextArea)
- Best Time to Buy and Sell Stock
- 【Qt】自定义标题栏并实现最小化/最大化/关闭窗口功能
- C++中类和结构体的介绍
- Android Studio SVN 使用方法
- 【C++】:C++ STL中的map 详解
- ecshop ecs_template 解释 作用,数据字段 首页自定义分类显示,美乐乐
- vs2012 opencv 模块计算机类新x86与目标计算机类x64冲突
- 不敢死队问题