Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глюк при разных цветах, внутри текстового поля 
:(
    Опции темы
Leopard25
Дата 6.12.2004, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 17.4.2004

Репутация: нет
Всего: нет



В JTextPane ввожу текст.
нахожу нужное слово :

Код

StyledDocument doc = m_SourceTextPane.getStyledDocument();
Style style = m_SourceTextPane.addStyle("Selector", null);
StyleConstants.setForeground(style, Color.red);
StyleConstants.setBold(style,true);
   
int lenght = doc.getLength();
String s,s1;
s = m_SourceTextPane.getText();

for (int i=0;i<lenght-9;i++)
{        
  s1 = s.substring(i,i+9);
 if ("perimeter".equals(s1))
 {
  // закрашиваем слово красным
  doc.setCharacterAttributes(i, 9,m_SourceTextPane.getStyle("Selector"), true);
 }
}


Проблема в том , что если имеем текст :
perimeter
perimeter
perimeter
perimeter
perimeter
perimeter

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

слово находиться правильно .

когда я использую substring он учитывает перевод строки ,а
когда setCharacterAttributes закрашивает то он неучитывает и
из-за этого с каждой новой строкой происходит сдвиг.
Как это исправить?

Это сообщение отредактировал(а) AntonSaburov - 6.12.2004, 16:32
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций )
PM MAIL ICQ   Вверх
Domestic Cat
Дата 6.12.2004, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



1. Твой коd не поймает последний perimeter, или поставь
Код

for (int i=0;i<lenght-8;i++)



2. Зачем substring? Используй doc.getText(int, int):

http://java.sun.com/j2se/1.4.2/docs/api/ja...ext(int,%20int)


--------------------

PM   Вверх
Leopard25
Дата 7.12.2004, 07:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 17.4.2004

Репутация: нет
Всего: нет



когда пишу : s1 = doc.getText(i,i+9); выдаёт: BadLocationException

почему ?
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций )
PM MAIL ICQ   Вверх
Domestic Cat
Дата 7.12.2004, 07:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата(Leopard25 @ 6.12.2004, 22:11)
s1 = doc.getText(i,i+9); выдаёт: BadLocationException


Выходишь за границы документа, т.к. второй аргумент - это длина :

Код

s1 = doc.getText(i, 9);


Это сообщение отредактировал(а) Domestic Cat - 7.12.2004, 07:15


--------------------

PM   Вверх
Leopard25
Дата 7.12.2004, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 17.4.2004

Репутация: нет
Всего: нет



Но как до запуска программы он знает что я выхожу за границы ?!

Как только текст набираю он это подчёркивает.
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций )
PM MAIL ICQ   Вверх
Domestic Cat
Дата 7.12.2004, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата
Как только текст набираю он это подчёркивает.


В таких случаях IDE всегда дает подсказку в чем проблемa.
Кстати, кak тогда ты получил BadLocationException, для этого нужно скомпилировatь и запустить?


--------------------

PM   Вверх
Leopard25
Дата 7.12.2004, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 17.4.2004

Репутация: нет
Всего: нет



StyledDocument doc = m_SourceTextPane.getStyledDocument();

Когда набираю , он подчёркивает красным : doc.getText(i,0);

Если навести мышь на это , то пишет :
Unhandled exception type BadLocationException
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций )
PM MAIL ICQ   Вверх
AntonSaburov
Дата 7.12.2004, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Цитата(Leopard25 @ 7.12.2004, 18:56)
Unhandled exception type BadLocationException

Значит надо это заключать в try ... catch.
PM MAIL WWW ICQ   Вверх
Domestic Cat
Дата 7.12.2004, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



То есть, нужно написать:

Код

try
{
     s1 = doc.getText(i,i+9);
}
catch (BadLocationException ble)
{
     e.printStackTrace();
}



--------------------

PM   Вверх
Leopard25
Дата 7.12.2004, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 17.4.2004

Репутация: нет
Всего: нет



Спасибо !!!
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций )
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0561 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.