JTextPane DefaultStyledDocument и setEditorKit конфликтуют

Я использую JTextPane в проекте, где я должен отображать номера строк и раскрашивать некоторые ключевые слова. Для отображения номеров строк я использую 'setEditorKit', а для раскрашивания текста переопределяю методы insertString() и removeString() класса DefaultStyledDocument, а затем использую JTextPane.setDocument(DefaultStyledDocument_object).

Проблема, с которой я сталкиваюсь, заключается в том, что, если я добавлю EditorKit в мой JTextPane, часть раскраски не будет работать. И если я добавлю DefaultStyledDocument после установки EditorKit, метод insertString смещает каретку в "нулевую позицию каретки", следовательно, портит пользовательский интерфейс.

Вот изображение функциональности, которую я пытаюсь достичь.

Что я хочу
Это то, что я хочу, чтобы мой JTextPane выглядел.

бардак
Вот как это выглядит сейчас

Как я могу использовать оба "setEditorKit" и "DefaultStyledDocument" в моем приложении?

1 ответ

Решение

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

См. Номер строки текстового компонента для примера такого подхода.

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