Компоненты Swing работают по модифицированному дизайну Model-View-Controller
.
-
Model
(в данном случае Document
) содержит данные. Обратите внимание, что для других компонентов Swing Model
фактически называется Model
. Например, у вас есть TableModel
для JTable
или ListModel
для JList
. - View-Controller является компонентом JTextField. Задача
View
- рисовать данные в Model
.
Когда вы добавляете текст в текстовое поле, вы действительно обновляете Model
. Затем Model
уведомляет View
, что данные изменились, и текстовое поле перекрашивается.
Итак, если вы добавите текст к Document
с помощью метода setText(...)
и затем установите новыйDocument
к текстовому полю, что касается View
, текст для рисования отсутствует.
Почему вы используете пользовательский документ? Как правило, есть лучшие варианты, если вам нужно настроить поведение текстового поля.