Получить всю историю изменений от JTextArea

Есть возможность получить список изменений в JTextArea по-простому?

Я имею в виду, что я хочу получить весь текст, который был напечатан / показан в JTextAreaчто-то вроде ReDo/UnDo. Есть возможность вернуться, как "CTRL + Z"

2 ответа

Решение

В те дни я использовал UndoManager для управления изменениями текстовых компонентов.

Вы можете найти API здесь: Oracle JavaDoc UndoManager

И пример использования здесь: пример Java2s UndoManager

НТН


Обновление:

UndoManager расширяет CompoundEdit, который объявляет защищенные векторные "правки" объектов UndoableEdit.

Вы можете получить доступ к этому вектору для внесения изменений в список, написав класс, который расширяет UndoManager и предоставляет общедоступный список методов получения getChangesVecor.

Если вы после изменений в тексте области, вы можете попробовать одно из следующих:

Добавьте некоторую форму слушателя к JTextArea, и каждый раз при изменении текста сохраняйте информацию в виде String в arrayList, хотя, если вы ожидаете чего-то большего, чем небольшое количество изменений, это решение, вероятно, будет крайне неэффективным.

Вероятно, лучший вариант, хранить информацию в текстовом файле / базе данных. Это создает постоянную запись / журнал информации, и затем может быть прочитано будущими программами при необходимости.

Удачи!

Другие вопросы по тегам