У меня есть класс, производный от JTree с пользовательскими TreeCellRenderers. Я реализовал перетаскивание в этом дереве, чтобы пользователь мог переставлять узлы дерева.
Режим отбрасывания DropMode.ON_OR_INSERT
, поэтому пользователь может отбрасывать узлы на других узлах или между ними. Когда пользователь перетаскивает узел, если указатель указывает между узлами, рисуется синяя линия, указывающая место, где будет вставлен узел. Если указатель находится на узле, нет указания на то, куда будет добавлен узел. Это происходит только тогда, когда я использую свой собственный TreeCellRenderer. Если я использую DefaultTreeCellRenderer, узел перетаскивания будет выделен во время перетаскивания.
Я нашел несколько примеров в Интернете, где люди хранят узел, который в данный момент выделен в JTree, и запрашивают его у TreeCellRenderer, отображая узел другим цветом, если TreeCellRenderer вызывается для узла, который должен быть выделен .
Есть ли более элегантное решение для выделения узла отбрасывания? Мне не удалось выяснить, как DefaultTreeRenderer делает это - кажется, нет никаких зацепок для перетаскивания функциональности.