Как настроить представление Java 9+ JTextField для различных кодовых точек текста в его модели? - PullRequest
0 голосов
/ 26 апреля 2020

Все 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 для отображения непечатаемых символов?

...