Я реализовал перетаскивание в моем JTree, и оно работает, но я нахожу это немного запутанным.На рисунке я показываю, как расположение отбрасывания между item4
и item5
может варьироваться в зависимости от того, как далеко вы находитесь между узлами.Я предполагаю, что это потому, что границы строк для item4
и item5
встречаются посередине между ними, и в зависимости от того, на какой стороне вы находитесь, вы на самом деле в другой строке.
Отс точки зрения пользователя, я думаю, что это не естественно.Я думаю, что если я упаду над узлом, падение произойдет над ним.Если бы я опустился ниже узла, падение произошло бы ниже него.Есть ли способ настроить такое поведение?
РЕДАКТИРОВАТЬ: Добавление кода, чтобы показать, как получить место размещения
DropLocation dropLoc = support.getDropLocation();
Point dropPoint = dropLoc.getDropPoint();
tree.getTree().getPathForLocation(dropPoint.x, dropPoint.y);
Обратите внимание, что support
является TransferSupport
объектом
РЕДАКТИРОВАТЬ 2: Я, казалось, решил эту проблему, проверив, находится ли точка падения выше или ниже середины узла.Тогда я могу сказать, было ли падение выше или ниже какого узла.