实现文本的复制和粘贴、文本的撤销和恢复(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