Создание левого поля для текстового поля JEditorPane - PullRequest
0 голосов
/ 20 июня 2010

Edit - короче говоря, я ищу надежный способ добавить левое поле в JEditorPane (читайте дальше, если у вас возникли проблемы).


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

По сути, я расширил PlainView и переопределил метод drawUnselectedText. Пока что я просто раскрасил текст красным и изменил шрифт. Я также переопределил метод drawSelectedText, чтобы раскрасить текст.

Это работает согласованно, независимо от того, выделен текст или нет, независимо от положения курсора и т. Д. - , пока у меня не установлено поле .

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

Я знаю, что это довольно специфическая проблема, с которой большинство других людей, вероятно, не сталкивались, и я ничего не нашел в сети по этому поводу, но я надеюсь, что кто-то здесь найдет решение.

Есть идеи? Даже все, что позволило бы мне установить маржу, используя какой-то другой метод, чем то, что я делаю, было бы чрезвычайно полезно.

1 Ответ

0 голосов
/ 20 июня 2010

Я разочаровался в поиске элегантного решения этой проблемы.По сути, я создал хак, который проверяет, существуют ли условия возникновения ошибки (выбор слева и т. Д.), И, если они это делают, настраивает отображение текста.

Мне действительно не нравитсяхаки, так как они часто вредны для переносимости и ремонтопригодности, но, похоже, это работает, поэтому я полагаю, что я абстрагируюсь от этого и надеюсь, что это ничего не сломит.ключевой момент.Я не получил никаких ответов, но я уверен, что есть люди, которые хотя бы пытались что-то придумать, так что спасибо:)

Кстати - если кто-то может придумать элегантное решение, я все равно будупримите это вместо моего собственного ответа (я не могу в течение двух дней).


Редактировать: Это одна из причин, по которой я люблю Java.Хаки реже вызывают проблемы с переносимостью - даже если это связано с рендерингом (он работает через взаимодействие с графическим объектом), он все равно должен работать в любой ОС.

...