powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Drag & Drop JTree Выделение ноды
11 сообщений из 11, страница 1 из 1
Drag & Drop JTree Выделение ноды
    #38184229
danatriel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго дня.
Вопрос может и банальный, но у меня уже варианты кончились:(
Итак, сам вопрос:
Есть D&D дерево,реализованное с помощью DropTargetListener, DragSourceListener, DragGestureListener.
Мне нужно при перетаскивании ноды в другую ноду получать координаты ноды-приемника (для последующего выделения ее и раскрытия по таймауту).

Вешал на дерево MouseMotionAdapter. Вроде бы искомый метод mouseDragged, но при захваченной ноде этот метод уже не отрабатывает :(

Дайте пожалуйста волшебного пинка в нужном направлении :)
...
Рейтинг: 0 / 0
Drag & Drop JTree Выделение ноды
    #38184282
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не нужен дополнительный Listener, вот пример из туториала:
http://docs.oracle.com/javase/tutorial/uiswing/examples/dnd/BasicDnDProject/src/dnd/BasicDnD.java
TransferHandler.TransferSupport содержит координаты, по ним можно найти ноду и запустить таймер, который позже её откроет.
По идее так.
...
Рейтинг: 0 / 0
Drag & Drop JTree Выделение ноды
    #38184293
danatriel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, спасибо Вам огромное!
...
Рейтинг: 0 / 0
Drag & Drop JTree Выделение ноды
    #38184423
danatriel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, все-таки немного не то:(

Мне нужно мышкой взять ноду, тащить ее над другими нодами и во время перетаскивания другие ноды должны выделяться, а если задержать мышку, то нода должна открыться:) как то так. А TransferHandler этого не позволяет :(
...
Рейтинг: 0 / 0
Drag & Drop JTree Выделение ноды
    #38185502
danatriel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может есть методы для решения задачи?
...
Рейтинг: 0 / 0
Drag & Drop JTree Выделение ноды
    #38185508
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
danatrielА TransferHandler этого не позволяет :(
Что именно он "не позволяет"? За вас он всё вышеописаное делать не будет. Что не так? Событие не отрабатывает когда нужно?
...
Рейтинг: 0 / 0
Drag & Drop JTree Выделение ноды
    #38185511
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть какой-то запускабельный пример кода, чтобы на нем посмотреть?
...
Рейтинг: 0 / 0
Drag & Drop JTree Выделение ноды
    #38185537
danatriel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, во вложении проект.
класс дерева в пакете Tree CustomTree_Form. Изначально будет дерево с элементом root.
К нему можно добавлять элементы - правая кнопка - Новый ниже, ну а потом уже их перетаскивать.
...
Рейтинг: 0 / 0
Drag & Drop JTree Выделение ноды
    #38185549
danatriel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczdanatrielА TransferHandler этого не позволяет :(
Что именно он "не позволяет"? За вас он всё вышеописаное делать не будет. Что не так? Событие не отрабатывает когда нужно?

Мне и не нужно, чтобы за меня он все делал. Мне нужно получать координаты ноды (компонета,да неважно чего) под курсором мыши, когда этим курсором держу ноду. А по факту получается, что событие срабатывает 1 раз когда двигаю вышей первый раз.
...
Рейтинг: 0 / 0
Drag & Drop JTree Выделение ноды
    #38185564
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, точно. TransferHandler не используется, когда работает родной свинговый DnD. О чем в JavaDoc и сообщается. Могли бы сделать над собой усилие и прочитать.

Вот так пробуйте:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        new TreeDropTarget(this){
            @Override
            public void dragOver(DropTargetDragEvent dtde)
            {
                Point p = dtde.getLocation();
                TreePath path = getPathForLocation(p.x, p.y);
                setSelectionPath(path);
                expandPath(path);
                super.dragOver(dtde);
            }
        };
...
Рейтинг: 0 / 0
Drag & Drop JTree Выделение ноды
    #38185604
danatriel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, спасибо. Все работает. Я документацию читал, но, похоже, недостаточно внимательно. Еще раз спасибо!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Drag & Drop JTree Выделение ноды
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]