Как мне получить JEditorPane, чтобы выделить всю ширину линии (а не только текст)? - PullRequest
4 голосов
/ 09 декабря 2008

Я пытаюсь получить JEditorPane, чтобы выделить всю ширину отображаемой линии. Все примеры, которые я пробовал, только подчеркивают текстовое содержание. Например, если у меня есть такой контент:

 ---------------------------------
|Here is some text                |
|some more text                   |
 ---------------------------------

внутри JEditorPane, представленной в поле выше, затем выделение первой строки выделяет только «Вот какой-то текст» (представлен между [и] ниже).

 ---------------------------------
[Here is some text]               |
|some more text                   |
 ---------------------------------

Я бы хотел выделить полную ширину JEditorPane следующим образом:

 ---------------------------------
[Here is some text                ]
|some more text                   |
 ---------------------------------

Есть ли способ сделать это?

Ответы [ 2 ]

4 голосов
/ 10 декабря 2008

Это кажется не слишком сложным. Я бы сделал это немного код-вызов .

Просто создайте свой собственный Highlighter, расширяющий DefaultHighlighter.

Переопределите метод paint() и просто оставьте ширину прямоугольника без изменений: это будет ширина панели.

Вы найдете в DZone Snippets полный пример : скопируйте и запустите Скажи мне, если это то, что вы после. Он включает в себя textPane.setSelectionColor(new Color(1.0f, 1.0f, 1.0f, 0.0f)); дополнение, которое вы упомянули в своем ответе.

альтернативный текст http://www.freeimagehosting.net/uploads/94a3a990e4.png

1 голос
/ 11 декабря 2008

Чтобы подсветка выделения не мешала решению VonC, я добавил следующую строку в конструктор TextHighlight (по существу, выделение выделения невидимым):

textPane.setSelectionColor(new Color(1.0f, 1.0f, 1.0f, 0.0f));
...