![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Leopard25 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
как перехватить событие вставки текста в JTextPane ?
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций ) |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
-------------------- |
|||
|
||||
| Leopard25 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
в insertUpdate получаю начальную позицию вставленного текста , а в
keyReleased получаю конечную , запускаю процедуру которая выделяет определённые символы. запускать процедуру выделения из insertUpdate неполучается потомучто setCharacterAttributes выдаёт ошибку. Всё работает правильно во всех случаях кроме того когда Сtrl+V или Shift+Ins остаются долго нажатыми и происходит многократная вставка текста. Как это исправить ? Как отменить повторную вставку? --------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций ) |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
НИспользовать keyReleased, по-моему, необязательно, ведь в DocumentEvent есть getOffset, getLength - начало и длина вставки. По идее ничто не должно мешать вызывать setCharacterAttributes в insertUpdate, может код покажешь?
-------------------- |
|||
|
||||
| Leopard25 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
Я могу показать код , но он очень большой...... показывать ?
когда в insertUpdate определял начало и конец текста то при вызове: StyledDocument m_doc; m_doc=this.getStyledDocument();//это правильно m_doc.setCharacterAttributes(start, (end-start),this.getStyle("def"), true); // здесь пишет ошибку (видимо обращаюсь за пределы текста) а когда нахожу конец текста через keyReleased pos2=m_SourceTextPane.getCaretPosition(); всё работает правильно --------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций ) |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
А как ты старт и енд находишь?
-------------------- |
|||
|
||||
| Leopard25 |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
вот так:
Это работает уже как надо , но как не использовать keyReleased ? Это сообщение отредактировал(а) Domestic Cat - 18.12.2004, 21:59 --------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций ) |
||||
|
|||||
| Leopard25 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
Когда пытался делать всё через insertUpdate :
вводил один символ , в Sintaksis(start,end); передовалось start=0 end=1 и m_doc.setCharacterAttributes(start, (end-start),this.getStyle("def"), true); выдавало ошибку.... --------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций ) |
|||
|
||||
| Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
Перекинуть все в отдельный метод и вызывать его.
А какую? -------------------- |
||||
|
|||||
| Leopard25 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
m_doc.setCharacterAttributes(start, (end-start),this.getStyle("def"), true); находится в отдельном методе и когда я вызываю его из insertUpdate
появляется ошибка Появляется вот это: Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Attempt to mutate in notification at javax.swing.text.AbstractDocument.writeLock(Unknown Source) at javax.swing.text.DefaultStyledDocument.setCharacterAttributes(Unknown Source) at editor.MyJTextPane.Sintaksis(MyJTextPane.java:68) at editor.MainFrame$MyDocumentListener.insertUpdate(MainFrame.java:146) at javax.swing.text.AbstractDocument.fireInsertUpdate(Unknown Source) at javax.swing.text.AbstractDocument.handleInsertString(Unknown Source) at javax.swing.text.AbstractDocument.insertString(Unknown Source) at javax.swing.text.AbstractDocument.replace(Unknown Source) at javax.swing.JTextPane.replaceSelection(Unknown Source) at javax.swing.JTextPane.replaceSelection(Unknown Source) at javax.swing.text.DefaultEditorKit$DefaultKeyTypedAction.actionPerformed(Unknown Source) at javax.swing.SwingUtilities.notifyAction(Unknown Source) at javax.swing.JComponent.processKeyBinding(Unknown Source) at javax.swing.JComponent.processKeyBindings(Unknown Source) at javax.swing.JComponent.processKeyEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source) at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source) at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source) at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source) at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) --------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций ) |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
Дурак я, забыл
-------------------- |
|||
|
||||
| Leopard25 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
Спасибо !
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций ) |
|||
|
||||
| heraclitus |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 25.6.2007 Репутация: нет Всего: нет |
Где можно почитать о работе с компонентами JTextPane, JEditorPane, только не сайт Sun? Хотелось бы с примерами...
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
Портянкин - SWING эффективные пользовательские интерфейсы
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| heraclitus |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 25.6.2007 Репутация: нет Всего: нет |
пасиб
|
|||
|
||||
![]()
|
| Правила форума "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. |