I want to be able to drag leave nodes between non-leaf nodes within the same JTree. When I try to implement Swing DnD using a TransferHandler, the drag never seems to initiate (no indication of the drag appears on the cursor or in the JTree). When I implement it using the more laborious AWT methods, I can get it to work. Is there a way to force Swing to recognize a DnD gesture within a single component?
In a related question, I want to initiate the drag when the user has selected leaf nodes, and only from the same parent. If a user selects a combination of nodes that includes a non-leaf node, or nodes from different parents, I'd like to have no DnD initiated in the first place (e.g. no cursor change, no visual indication of the drag initiating, rather than just rejecting the drop everywhere).
Two wrongs don't make a right... but three lefts do.
Joined: Jun 11, 2009
Ok, solved both problems. I was not specifying allowed actions by overriding getSourceActions(), and if you return null from createTransferable, the drag doesn't initiate.
Well done, and welcome to the Ranch.
We have a GUI related forum here, which would be a more appropriate place for this thread. I will move it for you, so future users, with the same problem can benefit from your solution.