Undo e Redo

Carlos07
26 de Mayo del 2004
Bueno días, tengo que hacer un editor de texto simple que permita el redo y undo (múltiplo) para lo que tengo que crear un vector que “guarde” todos los cambios efectuados en el cuerpo del documento, alguien tiene una idea o conoce algo parecido, gracias.

profesorchiflado
26 de Mayo del 2004
La idea la tienes y es buena.
Ahora implementala.

Saludos.

chuidiang
26 de Mayo del 2004
No sé si java tiene algo ya preparado para estas cosas (deberías investigar en el JTextArea o en los Document)

Una forma habitual de implementar esto es de la siguiente manera.
Haces una interface de esta manera

public interface comando
{
public void hazte();
public void deshazte();
}

Luego haces comando especificos que guarden la informacion de lo que han hecho.

Por ejemplo, un comando InsertarTexto, que implemente la interface anterior y que guarde qué texto se ha insertado y en qué posición.

Por ejemplo, otro comando BorraTexto que guarde el texto que se ha borrado y en que posición.

Cada vez que escribes o borras algo, creas el comando adecuado y lo metes en el Vector o lista de comandos ejecutados.

Cuando haces undo, debes ir llamando a los deshazte(). Si haces redo, a los hazte(). Cada comnado, como tiene que texto se ha insertado o borrrado y en que posicion, no debería tener muchos problemas para hacerse y deshacerse.

Luego, además, para que la memoria no crezca mucho, es cosa tuya limitar el número máximo de comandos en el vector, de forma que cuando añades nuevos comandos, si has llegado al tope, vas borrando los viejos.

Espero que esto te sirva de ayuda.

Se bueno.

Lucas
26 de Mayo del 2004
la SWING tiene una API para poder implementar undo/redo, croe que era javax.swing.undo Mira alli y busca algun manual o tutorial.