Java Перетаскивание изображения и отображение эскиза изображения при перетаскивании - PullRequest
3 голосов
/ 27 ноября 2010

У меня есть сетка с узлами изображения, и я хочу добавить в свое приложение функцию dnd, например, когда я перетаскиваю узел изображения на целевой JPanel, выполняю некоторые действия, например, показываю в оригинальном размере, удаляю и т. Д. Я добился этого с помощью способов с TransferHandler, а с DropTargets, DragSource и т. Д. Но у меня есть два вопроса, и я хочу обсудить их с вами.

а) Какой из двух способов лучше использовать? Я понимаю, что второй способ дает мне больше возможностей, чем TransferHandler, а первый - самый простой в использовании. Но я могу выполнять свою работу обоими этими способами, есть более эффективный из двух, или все дело в том, что я предпочитаю кодировать.

б) Во время перетаскивания я хочу отобразить изображение рядом с курсором. Первое, что я делаю, - это использование стеклянной панели JFrame и создание JCompoment, который рисует правильное изображение и следует за курсором. Могу ли я сделать это таким образом? После этого я вижу в документации, что метод startDrag DragSource получает аргумент dragImage. Это по той причине, по которой я хочу, я пытаюсь передать изображение, но не вижу результатов.

-------------- UPDATE ---------------------

По второму вопросу (б) я пробовал со стеклом, но у меня проблема во взаимодействии между java DND и моими слушателями для отображения большого пальца изображения на стекле. каждый раз только один из них работает нормально.

!!! Более конкретно событие mouseDragged не вызывается, когда я уже вызвал метод startDrag ()

Спасибо за ваше время.

1 Ответ

0 голосов
/ 29 ноября 2010

решаемые

Наконец-то я сам нашел решение.

Если у кого-то есть такая же проблема, я говорю, что дело в том, что после запуска метода startDrag () все события mouseDraged переходят в dragMouseMoved () (из DragSourceMotionListener), и я делаю ошибку, чтобы использовать также «void mouseDragged (MouseEvent») e) "из MouseMotionListener.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...