Все Java Компоненты Swing используют MVC, для каждого компонента есть Контроллер , Модель и Вид . В частности, JTextField
использует PlainDocument
в качестве своей модели для выборки данных и использует TextUI
в качестве своего представления для визуализации данных. Ссылка в JavaDo c: JavaDo c JTextComponents MVC. Обычно данными для JTextField
является текст , и для каждого символа текста Java использует кодовую точку , и что-то с именем GlyphView
будет отображать их для просмотра текст JtextField
. Есть некоторые символы, известные как не для печати (например, \u0000
в Unicode), и JTextField
не будет отображать их. Я попытался изменить модель, используя PlainDocument
, чтобы заменить непечатаемые символы в текстовой строке на печатные, используя replaceAll()
метод String
:
protected class TextModel extends PlainDocument
{
TextModel()
{}
@Override
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException
{
str = str.replaceAll("\u0000", "\ufffd");
super.insertString(offs, str, a);
}
}
но я не хочу делать какие-либо процессы в String или какие-либо изменения в Model. Как я могу изменить представление JTextField
для отображения непечатаемых символов?