| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: GUI и Java FX приложения > Drag and Drop |
| Автор: Reptor 20.8.2007, 14:30 |
| Мне необходимо перетаскивать картинки и я вот увидел такой во пример. http://blogs.sun.com/geertjan/entry/getting_around_isdragimagesupported_on_windows можно ли помоч его разобрать так как я про эту технологию мало что знаю а с англ у меня туго?. А в этом примере происходит то что мне необходимо. |
| Автор: Reptor 21.8.2007, 14:32 |
| может есть на русском какое объяснение про Drag and Drop? или ещё какой пример хороший? |
| Автор: _Michael 21.8.2007, 14:50 |
| Ты рисунки откуда хочеш перетаскивать? Откудато извне твоей аппликации или внутри, из JLabel например? |
| Автор: Reptor 21.8.2007, 14:51 |
| _Michael, Я хочу перетаскивать из JLabel (JButton). |
| Автор: _Michael 21.8.2007, 18:36 |
| Одним словом здесь в архиве плод моих творений, вроде разобрался более-менее. Полдня сидел думаю то что тебе надо |
| Автор: Reptor 21.8.2007, 18:48 |
| _Michael, огромное спасибо буду смотреть |
| Автор: _Michael 21.8.2007, 19:16 |
| |
| Автор: Reptor 22.8.2007, 18:10 |
| _Michael, похоже то что надо только небольшое уточнение в том что я беру с кнопки картинку и перетаскиваю её на произвольное место на JPanel. Добавлено через 33 секунды А в примере вроде есть только одна точка в которую можно перетащить Добавлено через 2 минуты и 56 секунд но это уже молочи ещё раз огромнейшее тебе спасибо _Michael, Добавлено через 3 минуты и 37 секунд да снова забыл если что будет не ясно то я обязательно обращюсь |
| Автор: _Michael 23.8.2007, 12:46 | ||||
Чтоб иконка была в любом месте, делаем минимальные изменения, а именно, DropTarget вешаем теперь не на JLabel а на панель на которой лежит етот наш JLabel чтоб можна было "дропать" в любом месте Панели
и второе изменение, в методе public void drop(DropTargetDropEvent e) дописываем одну строчку, точнее две
|
| Автор: Reptor 7.9.2007, 13:23 | ||
| Вот у меня ещё одна проблема возникла а состоит она в следующем: когда мы перетягиваем картинку то я так понял мы ее цепляем на уже сущуствующий Label (ну тот который на панели) собственно вот жта часть
а можно ли как то делать это на панели ? может как то картинку рисовать или ещё что я вчера пробовал так и нечё не получилось. Просто я зделал 2 лабел с картинками и я сначала тащу с одной а потом с 2-ой и они друг друга перетирают. А надо что б их 2 оставалось. Как это можно реализовать? Я предпалпгаю надо как то рисовать её на панели (создавать или ещё както) и делать массив вот этих кртинок DataFlavor я точно не знаю так как толком ещё мало понимаю весь процесс. |
| Автор: Reptor 8.9.2007, 21:11 | ||
|
| Автор: Reptor 12.9.2007, 12:01 |
| Ещё есть один вопрос а как сделать так что б когда при перетаскивании картинки картинка с источника исчезала? |
| Автор: Reptor 12.9.2007, 15:14 | ||
зделал следующим образом и работает нормально
в классе DropLabel и его внутренем классе DSListener в методе dragDropEnd зделал DragLabel.this.setVisible(false); и хотел уточнить насколько это верно и не критично может более правильно в другом месте это делать и как то по другому? Может как то удалять картинку с DropLabel или ещё как? |
| Автор: _Michael 12.9.2007, 16:35 |
| Ну если так подумать, то наверное метод public void dragDropEnd(DragSourceDropEvent e) для того и предназначем чтоб отлавливать завершение етого всего процесса. Не знаю но если тебе етого DragLabel больше не надо ведь фактически то ета DragLabel и служила для единственной цели служить источником картинки, и если ты картинку перетащил уже то можно ету DragLabel вообще убрать из панели чтоб ее сборщик мусора "утилизировал" |
| Автор: Reptor 12.9.2007, 16:37 | ||
Вот так как это реализовать? |
| Автор: _Michael 12.9.2007, 16:38 | ||
Ты наверное сплутал DragLabel с DropLabel или я чтото не понимаю. Добавлено @ 16:39 ну есть же такой метод remove(Component comp);
Както так и не забудь если где то ссилки на ету Jlabel есть также их сделать null'ами |
| Автор: Reptor 12.9.2007, 16:41 | ||
| _Michael, ой DropLabel - это опечатка я имел ввиду DragLabel Добавлено через 3 минуты и 23 секунды да делаю
нечего не происходит. Как быть? |
| Автор: _Michael 12.9.2007, 16:47 | ||
Надо еще валидейт и репеинт может чтото одно не знаю точно.
|
| Автор: Reptor 12.9.2007, 16:47 |
| подожди что то я запутался panel.remove(DragLabel.this); но ведь панел я не знаю мне она не доступна или как к ней достучаться из dragDropEnd |
| Автор: _Michael 12.9.2007, 16:48 | ||||||
Надо еще валидейт и репеинт может чтото одно не знаю точно.
Добавлено @ 12:57 Попробуй взять парента, и посмотреть может ето она как раз.
или
|
| Автор: newsl 8.9.2011, 10:54 | ||
| мине необхадимо переключится на ДнД в процессе простого передвижения компонанта по панели тоесть , когда просто предевигаю компонент в приделах панели то просто перерисововаю его на позицию курсора когдаже компонент зашол полностю за краи фреима то надо включить ДнД проблема в том что когда перетаскиваю просто по панели и подовлаю ДнД то неудаётся отослать ешё один event когда зашол за краи , как создать такои event и отослать нужному обработчикку низнаю помагите у каво есть харошие идеи по этому поводу ибо очен надо причом срочно ! ? Добавлено через 1 минуту и 45 секунд была идея както создать собственый DragGestureEvent толко вот как и как отослат низнаю :( если вообше такое вазможно Добавлено через 7 минут и 6 секунд
попробуи это oldFrame.getContentPane().validate(); oldFrame.getContentPane().repaint(); |