![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 6 Всего: 31 |
В данный момент я пишу свой небольшой редактор HTML. Меня удивило то, что часть стилизации сделать можно легко (шрифт и его размер, например), а остальные теги не пойми как надо добавлять. Точнее, доступна стилизация от StyledEditorKit, а HTMLEditorKit почти ничего нового, похоже, не добавил.
В связи с этим вопрос: как можно по уму добавлять теги в документ и/или проставлять атрибуты выделенному тексту (как я понимаю, теги PRE, H1 и им подобные должны устанавливаться через атрибуты). -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| ShurikA |
|
|||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: 2 Всего: 3 |
Почему то я сейчас не нахожу, но точьно был тут очень удачный пример на эту тему.
Поройся, наверняка найдёшь ещё кучу интересных примеров. Добавлено через 2 минуты и 48 секунд Попробуй вот эти две ссылки: http://www.java2s.com/Code/Java/Swing-JFC/...-EditorPane.htm http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/Editor.htm |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 6 Всего: 31 |
Я вчерась там рылся и нифига найти не смог. :(
По ссылкам сейчас посмотрю. С некоторыми вещами разобрался самостоятельно, но это в основном стили от StyledEditorKit (например, выравнивание). Плюс умудрился-таки приделать вставку тэга HR. А вот что посложнее - пока никак. Добавлено через 4 минуты и 33 секунды Вторая ссылка не подходит. JFace от Eclipse неприемлем по двум причинам - работаю на IDEA и, что важнее, надо обойтись стандартным JDK плюс свои классы, если потребуется. Добавлено через 8 минут и 10 секунд Первую ссылку я вчера смотрел и сейчас на всякий глянул. Там нет (практически) редактирования. Отображение и в основном с загрузкой по урлу. Добавлено через 11 минут и 28 секунд HR вставляется так:
-------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| ShurikA |
|
|||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: 2 Всего: 3 |
Прикольно, спасибо что поделился |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 6 Всего: 31 |
Всегда пожалуйста.
Небольшой оффтоп: если уж начал тему и нашёл решение, то надо им поделиться, чтобы и другие могли его использовать и не начинали новых дублирующих тем. Жаль, что пока не всё поборол. Если надо, могу выложить методу вставки стилизации текста, зашитую внутрях StyledEditorKit, но по каким-то причинам не выведенную наружу для нормального пользования. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| ShurikA |
|
|||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: 2 Всего: 3 |
||||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 6 Всего: 31 |
Без проблем, только немного позже (я систему переставил и сейчас ставлю и настраиваю весь софт). Думаю, или сегодня вечером, или завтра выложу описание и пример кода.
-------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| nornad |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 6 Всего: 31 |
В принципе, всё довольно просто. У эдиторкитов есть встроенные классы Action'ов. Часть из них уже реализована в виде статических полей эдиторкита. Не знаю, почему, но не всем Action'ам соответствуют статичные поля. Может, на то есть веские причины, а может обычная лень разработчиков... Суть не в этом.
Кроме того, как оказывается, не для всех статичных полей Action'ов есть соответствующие им имена действий, по которым их можно идентифицировать. Вернёмся к тому, как же всё-таки добраться до нужного нам Action'а. У текстовых компонентов JTextPane и JEditorPane есть (у всех, кто наследует JTextComponent) метод getActions(), с помощью которого можно получить массив доступных действий. Если мы собираемся использовать множество различных действий, то имеет смысл запихать содержимое этого массива в мапу. Если нет - ищем нужный и пользуем его.
Теперь покажем, как использовать что-либо из наших замапленных действий (на примере кнопки для тулбара):
Вместо DefaultEditorKit.pasteAction может потребоваться указать свою строковую константу, обозначающую действие (если таковая не объявлена в классе эдиторкита или недоступна снаружи). Узнать значения констант можно, если при добавлении Action'ов в мапу выводить их константы в консоль или любое другое удобное место (я, например, смотрел в дебаге на содержимое мапы). К примеру, для выравнивания по центру надо использовать константу "center-justify". Ещё веселее ситуация, если есть класс для несольких однородных Action (например, для установки стиля шрифта (имени шрифта) или размера текста). В этом случае подобные действия в мапу не попадают. Чтобы можно было использовать эти действия, потребуется самостоятельно создать соответствующие Action'ы (хранить можно хоть отдельно, хоть в той же общей мапе - кому как удобнее). При создании потребуется указать некоторые специфичные для конкретного Action'а параметры. Пример:
P.S. Блин, почти на туториал тянет. Добавлено через 1 минуту и 58 секунд Ещё могу поставить тэг PRE, но это опишу уже позже (там свои заморочки). Добавлено через 4 минуты и 37 секунд Первый и второй примеры не мои - нарыл где-то в сети и подсмотрел. А вот до изврата (третий кусочек и тэг PRE) самому пришлось доходить. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
||||||
|
|||||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 6 Всего: 31 |
Как оказалось, этот способ имеет существенный недостаток. Попробуйте вставить линию. Вставили? Теперь ещё раз. Ничего не видно. Теперь нажмите Enter. Снова ничего не видно. Ещё раз Enter - появилась вторая линия. А теперь самое весёлое - жмите Enter сколько влезет ;) Жуть. Надо бы как-то исправить. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 6 Всего: 31 |
Так-с... с HR разобрался:
Теперь будем думать над остальным. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| ShurikA |
|
|||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: 2 Всего: 3 |
А как на счёт выставлать style а не теги HTML? |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 6 Всего: 31 |
Ты имеешь в виду bold/italic или шрифт/его размер?
-------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| ShurikA |
|
|||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: 2 Всего: 3 |
Но не size="" внутри тега font a style="font-size: 14 px". |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 6 Всего: 31 |
Такого я пока не умею. Но постепенно кое-что откапывается.
-------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 6 Всего: 31 |
Так-с... Вот как можно поставить тэги PRE/Hn (или font style="font-size: 14 px"):
Метод имеет свои недостатки, т.к. необходимо вручную определять наложение тэгов и разруливать коллизии. Хотя, я не уверен, что в официальной реализации тех же болд-италик коллизии уже разруливаются. Надо будет как-нибудь проверить. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |