Los Document (que van metidos en JTextField y similares) también tienen soporte, por lo que hacer undo - redo de los JTextComponent es casi inmediato.
El funcionamiento es básicamente el siguiente:
- Los Document admiten un suscriptor a cambios undoables. Para suscribirse hay que llamar al método addUndoableEditListener().
- javax.swing.undo tiene una clase UndoManager que implementa la interface UndoableEditListener, que se puede suscribir a esos cambios en los Document.
- La clase UndoManager va guardando todos los cambios de todos los sitios en los que está suscrita. Tiene métodos de undo() y redo() para hacer y desacer los cambios de los que se ha enterado de forma secuencial, además de otro montón de métodos útiles.
UndoManager um = new UndoManager();
textField1.getDocument().addUndoableEditListener (um);
textField2.getDocument().addUndoableEditListener (um);
...
// cuando venga bien (pulsar algún botón que ponga "undo") se puede hacer
um.undo();
Una pequeña tontería. Todo esto lo he mirado, pero no lo he probado. Es posible que no funcione o haya alguna pega que no está aquí.
No hay comentarios:
Publicar un comentario