Как получить информацию мыши во время перетаскивания в Java? - PullRequest
4 голосов
/ 17 марта 2011

У нас есть запрос на продукт, над которым я работаю, чтобы получить больше отзывов о нашем поведении перетаскивания. В частности, они хотели бы, чтобы мы выделяли определенные области, когда мышь находится над ними во время операции перетаскивания (чтобы показать, где произойдет падение). Однако мы используем TransferHandler для обработки как DnD, так и cut / copy / paste, и на основании того, что мы тестировали, кажется, что Swing не позволит нам добавить еще один DropTarget к компоненту (ретроспективно, по некоторым очевидным причинам!) Мы попытались пойти несколькими путями, ни один из которых не принес никаких плодов.

По сути, мы хотели бы попасть в середину событий dragEnter и dragExit, продолжая при этом использовать возможности TransferHandler для упрощения операций вырезания / копирования / вставки и удаления. У кого-нибудь есть примеры, чтобы делать такие вещи? Или это действительно сложно сделать в текущей настройке DnD в Swing?

1 Ответ

2 голосов
/ 17 марта 2011

Большинство встроенных компонентов Swing имеют встроенную поддержку (JTree, JList и т. Д.). Для этих компонентов вы можете установить режим перетаскивания, и пользовательский интерфейс будет обрабатывать рисование соответствующих визуальных эффектов.

myJList.setDropMode(DropMode.ON_OR_INSERT);

Для пользовательского компонента вам нужно обработать чертеж самостоятельно, переопределив paintComponent для рисования пользовательских эффектов, а затем добавив propertyChangeListener для свойства dropLocation, которое при необходимости вызывает соответствующие перерисовки. Это будет вызываться часто при перетаскивании, поэтому вы можете вызывать перерисовки только тогда, когда изменение местоположения отбрасывания фактически приводит к изменению поведения.

Учебник по Swing при рендеринге Drop Drop

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