Я хочу реализовать текстовый редактор в Java, где модель и вид текстовой области полностью разделены, а некоторые части текста «рассчитаны». Я просмотрел документацию и некоторые примеры набора редактора Java, Document и DocumentFilter, но я по-прежнему потерял эту тему.Реализация текстового редактора с отдельной моделью и представлениями в Java
Вкратце, что я хочу сделать, это текстовый редактор, где определенные слова, соответствующие шаблону (например: ID123456), будут заменены другим свойством объекта, на который ссылается идентификатор в соответствующем тексте. Этот обмен должен происходить только в представлении, хотя, когда текстовая область изменена или сохранена, исходный текст должен быть сохранен, а не тот, который проецируется для представления. Конечно, в этом случае проецируемый текст не может быть изменен, но с ним можно легко обращаться с помощью DocumentFilter.
пример, чтобы сделать задачу четче:
модель позади текстового редактора:
Верно ли, что ID123 имеет наибольшее производство бокситов в мире?
Нет, это неправда, ID44 имеет самое большое производство бокситов.
Что пользователь должен видеть:
Верно ли, что Бельгия имеет наибольшее производство бокситов в мире?
Нет, это неправда, Австралия имеет наибольшее производство бокситов.
Я сейчас думаю о написании парсера, который делает это преобразование каждый раз, когда это необходимо, но мне не очень нравится это решение. Любая помощь будет оценена в отношении того, каким будет оптимальный способ сделать это.
Вы ищете ['MessageFormat'] (https://docs.oracle.com/javase/8/docs/api/java/text/MessageFormat.html)? – trashgod
'где модель и вид текстовой области полностью разделены. Зачем вам они нужны? Существуют и другие способы выполнения замен, сохраняя «необработанный» текст неповрежденным вне документа (например, DocumentFilter заменяет в Document и сохраняет raw (или делегирует класс, который хранит raw)) – copeg