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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить компонент из JTextPane 
V
    Опции темы
hail
Дата 29.3.2007, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Есть такая проблема. Я создаю JTextPane ввожу в него текс с клавиатуры, так же добавляются туда компоненты ImageIcon и JButton используя insertComponent(). Когда редактирование закончено мне нужно обработать этот документ.

А именно, нужно перебирать его содержимое пока не попадется объект ImageIcon или JButton, а когда он попадется нужно получить его, обработать и вставить на прежнее место обработанным.

Как можно организовать такой перебор и как при этом получать компоненты.
Нужно получить что-то вроде:
Код
while(notEnd){
  перебераем
  if(перебор.getComponent()==JButton){действие1}
  else if(перебор.getComponent()==ImageIcon){действие2}
  перебираем дальше
}

PM MAIL   Вверх
AntonSaburov
Дата 29.3.2007, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


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

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



Посмотри getComponentCount и getComponent(int n). Или просто getComponents()

Этого должно хватить, чтобы перебрать все компоненты, которые лежат в контейнере - в данном случае на панели 
PM MAIL WWW ICQ   Вверх
hail
Дата 29.3.2007, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Посмотрел, спасибо, хватило. Теперь я получаю компонент и как мне отличить ImageIcon это или JButton?
PM MAIL   Вверх
AntonSaburov
Дата 29.3.2007, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


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

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



Код

Component c = panel.getComponent(1) // для примера
if(c instanceof ImageIcon) {
   ImageIcon icon = (ImageIcon)c;
   // Ну и делай что хочешь
}

PM MAIL WWW ICQ   Вверх
hail
Дата 29.3.2007, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Огромное спасибо. Это мне и надо было.
PM MAIL   Вверх
AntonSaburov
Дата 29.3.2007, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


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

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



Да не за что - заходи еще.
PM MAIL WWW ICQ   Вверх
hail
Дата 29.3.2007, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А как мне узнать позицию в которой находился компонент?
PM MAIL   Вверх
AntonSaburov
Дата 29.3.2007, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


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

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



getBounds() для java.awt.Component
PM MAIL WWW ICQ   Вверх
hail
Дата 29.3.2007, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



возвращает Rectangle. как мне координаты преобразовать в позицию, т.е. я получаю компонент, обрабатываю, если не подходит заменяю другим, а потом мне надо обработанный поставить там где был исходный. Я думаю нужно как-то позицию получить?
Потому что перед компонентом может быть текст различных шрифтов и размеров и другие компоненты.
PM MAIL   Вверх
hail
Дата 29.3.2007, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Все нашел

PM MAIL   Вверх
snaker
Дата 15.4.2007, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Хм... а можно код, как вставить ImageIcon в TextPane smile 
Ведь insertComponent(Component c) не принимает аргумент типа ImageIcon :(

Сорри, если тупой вопрос... просто надо нарисовать в тексте картинку....
PM MAIL ICQ   Вверх
nornad
Дата 15.4.2007, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

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



Вообще-то, ImageIcon и просто так на панель не положишь. ;)
Идея такова:
делаешь панель, которая отображает картинку (точно не помню, но, кажется, надо переопределить paint-метод)
кладёшь эту панельку в свой TextPane
наслаждаешься полученным результатом

Если нужен код и никто его тут не выложит, чуть позже я сам закину (сейчас чуток занят).


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
snaker
Дата 15.4.2007, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо. Понятно. Тогда с таким же успехом можно добавить JLabel, у которого в качестве параметра конструктора задана моя иконка ;)
PM MAIL ICQ   Вверх
nornad
Дата 15.4.2007, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

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



В принципе, да. smile


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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