![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Turinets |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 24.2.2009 Репутация: нет Всего: нет |
Народ. Просто перетаскивать компонент по контейнеру я умею. Проблема вот в чём, есть скажем контайнер данных (дерево) и есть рядом панель с объектами. Для появлении нового объекта на дереве нужно проделать такие манипуляции: на панели выбрать нужный элемент и зажав мышь перетащить на дерево (и отпустить). Хотелось бы, чтобы данные на подствечивались при наведении на них объекта, ну типа подсветится тот узел в который будет добавлен новый объект. Для этих целей нужно обрабатывать движение мыши.
Проблема: если зажать кнопку на панели, то будут обрабатываться листнеры этой самой панели, а мне надо, чтобы обрабатывались движение мыши по дереву. Происходит дело так:
В момет зажатия кнопки запоминается нужный тип объекта (в будущем он будет вычисляться исходя из координат клика), курсор меняет вид... когда происходит отпускание (опять же в будущем) будет взят правильный узел и в него помещён объект (тип которого сохранёт). Задача такова на данный момент: нудно, чтобы при движении изменённого курсора подсвечивался нуждый элемент (который под ним) - метка. Можно конечно переводить координаты сначало в абсолютные, а потом в координаты дерева, но мне кажется должен быть более простой и логичный способ это организовать. |
|||
|
||||
Turinets |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 24.2.2009 Репутация: нет Всего: нет |
Другими словами, хочу сделать так, чтобы можно было перетаскивать данные из одного контейнера в другой, по типу как перетаскивать файлы в виндовом окне. т.е. выделяешь их в одном окне, и перетаскиваешь в другое, при этом в том другом будет подсвечена папка в которую будут перенесены файлы, т.е. сами объекты второго окна реагируеют на движение мыши.
|
|||
|
||||
1024 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 5.12.2006 Репутация: 1 Всего: 1 |
для драгндропа есть несколько классов в пакете java.awt.dnd. Примеры можно гуглём посмотреть
http://www.exampledepot.com/ мышь для этого отслеживать не надо |
|||
|
||||
Turinets |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 24.2.2009 Репутация: нет Всего: нет |
Нет, народ, нужен пример конкретно по моей задачи.
Либо отсутствует описание, либо решается другая задача. Всё что я просмотрел мне не помогло. Как с помощью этой библиотеки (пакета) организовать перетаскивание объекта из одного контейнера в другой до меня не доходит. Плиз, более детальный ответ без отправления меня через тридевять земель по сылкам. Какой класс должен какой класс наследовать и имплементить? Нифигпа не понятно. Есть LeftPanel - панель от которой надо вести перетаскивание. Важно только изнать координаты в момент нажатия. Есть RightPanel - панель (которая как бы дерево в будушем), куда надо перетащить. Соответственно важно, чтобы фиксировался момент отпускания кнопки + движение мыши по RightPanel.] Что имплементить и что наследовать? |
|||
|
||||
1024 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 5.12.2006 Репутация: 1 Всего: 1 |
тебе ж говорят: координаты не нужны. Есть стандартная реализация драгндропа.
вот стандартный пример http://java.sun.com/docs/books/tutorial/ui.../basicdemo.html можно запустить и поперетаскивать можно скачать код примера и посмотреть или скачать/купить книжку на русском по свингу, обычно примеры перетаскивания приводятся среди прочего |
|||
|
||||
Turinets |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 24.2.2009 Репутация: нет Всего: нет |
Пасиб, вроде начало проясняться.
Книгу читать, ради дропа... хм. Мне ответ быстро нужен. Пример кстатии хороший. Чтобы добить вопрос. Как я понял, включения механизма в компоненте даёт такой эффект: Если этот компонент не принимает дроп, то курсор становиться перечёркнутым кругом. Нужно сделать так: Есть панель - палитра, если захваченный элемент был взят с этой палитры (т.е. является определённым классом), то курсор над этой панелью должен принимать определённый вид. Сама же палитра тока отдаёт объекты , но не принимает. Как программировать смену курсора при возникновении dnd события? Хотя с другой стороны палитру можно сделать как принимающий компонент, тока в процессе приема ничего не происходит. Но всёже как быть с курсором? Это сообщение отредактировал(а) Turinets - 18.3.2009, 21:02 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |