| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: GUI и Java FX приложения > Добавление компонентов в JTextPane |
| Автор: JulT 28.9.2006, 16:21 |
| Вообще есть JTextPane в нем текст,выделяем слово в JTextPane ,при нажатии правой клавиши я сделала выпадающее меню,когда жмем на один из пунктов меню у меня заместь выделенного слова в JTextPane вставляется кнопка с названием этого слова.Таких кнопок получается несколько,на каждую из них я повесила обработчик события.Также,на каждую из этих кнопок я повесила другое выпадающее меню,в котором находится пункт,нажимая на который мне нужно чтобы кнопка удалялась,а на ее место вставлялось слово которое было до этого.Вопрос в следующем:1)как удалить нужную мне кнопку 2) нужно ли хранить все кнопки в отдельном массиве,для того чтобы с каждой в отделности можно было работать 3) где фиксировать координаты кнопки,потому что если не фиксировать,то выпадающая менюшка которая относится к кнопкам всегда вылазит только на последней созданной кнопке Надеюсь поняли меня,ХЭЛП МИ ПЛИЗ |
| Автор: JulT 28.9.2006, 16:52 | ||
не удаляет у меня он кнопку,делаю так:
ничего не удаляет,менюшка вылазит не понятно где |
| Автор: LSD 28.9.2006, 17:06 | ||||
Меню отображается не там где надо потому что когда ты пишешь pop2.show(button, location.x, location.y) - то x, y должны быть смещением относительно button, т.е. что-то типа такого:
А насчет того почему кнопка не удаляется сложно сказать, по идее должна, попробуй модифицировать код так:
|
| Автор: JulT 28.9.2006, 17:25 |
| Ничего не помагает,есть 2 кнопки,одна называется Кнопка1 ее я создала первой, вторая наз Кнопка2, в результате менюшка вылазит только на Кнопке2 и соответственно вывод в консоль постоянно такой: Call remove button: Кнопка2 |
| Автор: LSD 28.9.2006, 17:33 | ||
Вот и источник проблемы: ты неправильно определяешь с какой кнопкой работать. Попробуй получать нужную кнопку так:
|
| Автор: JulT 28.9.2006, 18:01 |
| Не удаляется,но в консоли пишет уже разные названия кнопок |
| Автор: LSD 28.9.2006, 21:04 | ||
Теперь модифицируй метод removeButton():
|
| Автор: JulT 29.9.2006, 11:08 | ||||
А он мне подчеркивает
первый раз такую запись for вижу |
| Автор: powerOn 29.9.2006, 11:11 | ||
А какая у вас версия Java? Данный код будет работать в Java версии не ниже 1.5... |
| Автор: LSD 29.9.2006, 11:13 | ||||
Замени:
на
Ты используешь не JDK 1.5? |
| Автор: JulT 29.9.2006, 11:23 | ||||
| я использую JDK 1.4 Написала так как вы сказали :
но все равно не удаляет Добавлено @ 11:27 чуть не забыла,в консоли ничего не отрабатвается
|
| Автор: LSD 29.9.2006, 11:30 |
| Значит кнопка не добавлена в jTextPane2. Тут уже надо анализировать весь код, особенно тот место где ты добавляешь кнопку в jTextPane2. |
| Автор: JulT 29.9.2006, 11:38 | ||
добавляю сто процентов,ведь я ее вижу своими глазами, при нажатии на нее у меня другое окошко вылазит,Боже мой что же делать.Вставляю я вот так вот:
помогите,не бросайте меня |
| Автор: LSD 29.9.2006, 12:07 | ||
Попробуй сделать так:
|
| Автор: JulT 29.9.2006, 12:16 |
| сделала,ну и что теперь,кнопки пропали сами по себе,а мне ж нужно чтобы я сама их удалять могла |
| Автор: LSD 29.9.2006, 12:19 | ||
Так ты вызывай replaceSelection() только для того диапазона где стоит нужная кнопка:
Добавлено @ 12:22 Я имел в виду в методе removeButton() вместо remove() вызывай replaceSelection(). Только для каждой кнопки придется помнить в какое место она вставлялась, для этого можно использовать например HashMap. |
| Автор: JulT 29.9.2006, 12:58 |
| а что записывать в HashMap, в качестве ключа кнопку,а в качестве значения что,там же получается 2 значения,одно начало кнопки,второе конец |
| Автор: LSD 29.9.2006, 13:15 | ||
Создай класс для хранения позиции:
|
| Автор: JulT 29.9.2006, 15:05 | ||
простите,а вы бы могли чуточку пояснить как работают эти 2 метода,в кратце хотя бы:
|
| Автор: LSD 29.9.2006, 15:43 | ||||||
| equals() 1. Проверяем тот же это самый объект или нет (это не обязательно, но в большинстве случаев повышает производительность)
2. Проверяем что объект не null и того типа что и данный:
3. Приводим переданый объект к типу ButtonPos и сравниваем каждое поле:
hashCode() - возвращает некоторое число характеризующее данный объект, что-то наподобие контрольной суммы объекта. Только назначение другое, используется в объектах наподобие HashMap. В данном случае считаем ее как зависимость от хеш кодов всех полей объекта. Эти два метода в основном используются в коллекциях. Сравнение объектов в коллекциях происходит с помощью метода equals(). А hashCode() используется классами Hashtable, HashMap и т.д. Есть одно правило, если для двух разных объектов equals() возвращает true, то и hashCode() должен возвращать одинаковое число. Обратное не обязательно. |
| Автор: JulT 29.9.2006, 15:49 |
| ой спасибо вам огромное за пояснения сорри |
| Автор: LSD 29.9.2006, 16:03 | ||
Что-то наподобие такого:
Тут правда есть один момент: когда мы меняем текст, то положение кнопок меняется, и надо это как-то отслеживать. Пока я не знаю как это лучше сделать, но еще подумаю на эту тему. |
| Автор: JulT 29.9.2006, 16:40 |
| спасибо огромное за помощь,не все получается при удалении кнопок,текст вставляется на место кнопки между другим словом,но об этом уже в понедельник,а то у меня уже сил нет. Спасибо еще раз LSD |
| Автор: LSD 29.9.2006, 16:43 |
| Пожалуйста |
| Автор: LSD 1.10.2006, 15:38 | ||
Вообщем вот, что у меня получилось:
|
| Автор: JulT 2.10.2006, 10:50 |
| спасибо большое,но тут есть один моментик.дело в том,что при нажатии на кнопочку,у меня должно появлятся другое окошко,а в данном случае она(конпка) исчезает,мне нужно,чтобы кнопка исчезала тогда,когда мы нажимаем правой клавишей на ней,потом вылазит менюшка,в которой я выбираю пункт убрать кнопку,вот,как такое сделать |
| Автор: LSD 2.10.2006, 11:30 | ||
Это совсем не сложно
|
| Автор: JulT 2.10.2006, 11:43 |
| спасибо ОГРОМНОЕ ВАМ А теперь наверное наступает самое сложное: я разобрала предложение, в нем находятся кнопочки, теперь мне всю эту структуру нужно где-то хранить,не знаю где,или в базе данных,или может в файле каком-то. Надо чтобы когда пользователь выбрал просмотр,ему сразу же в JTextPane вставлялось это разобранное предложение со всеми кнопками и событиями для этих кнопок.Это вообще реально сделать |
| Автор: JulT 2.10.2006, 13:59 |
| поробую сама разобраться,если что спрошу |
| Автор: LSD 2.10.2006, 14:11 |
| Для начала попробуй его просто сериализовывать (но есть у меня сильное подозрение, что так работать не будет). Добавлено @ 14:12 Да, и не забудь все свои листенеры сделать сериализуемыми. |