Hallo,
ich habe einen JTree mit Drag'n Drop Funktion. Im Prinzip funktioniert das auch wunderbar das einzige Problem ist das die Drag'n Drop Funktion sehr ungenau ist :-(
Also wenn ich den Node auf über einen anderen los lasse ist es meißt so das mein verschobener Node nicht genau dort eingefügt wird wo ich ihn los gelassen habe sondern eher einige nodes darüber oder darunter. Wie kann das sein? Wieso passiert das?
Hier mein Code:
java Code:
Ich hoffe mir kann jemand weiterhelfen.
Vielen Dank im voraus.
Gruß und so
Loki2
ich habe einen JTree mit Drag'n Drop Funktion. Im Prinzip funktioniert das auch wunderbar das einzige Problem ist das die Drag'n Drop Funktion sehr ungenau ist :-(
Also wenn ich den Node auf über einen anderen los lasse ist es meißt so das mein verschobener Node nicht genau dort eingefügt wird wo ich ihn los gelassen habe sondern eher einige nodes darüber oder darunter. Wie kann das sein? Wieso passiert das?
Hier mein Code:
java Code:
- setDropTarget(new DropTarget(buildTree, new DropTargetListener() {
- private DefaultMutableTreeNode getNodeForEvent(
- DropTargetDragEvent dtde) {
- Point p = dtde.getLocation();
- TreePath path = getJTree().getClosestPathForLocation(p.x, p.y);
- return (DefaultMutableTreeNode) path.getLastPathComponent();
- }
- public void dragOver(DropTargetDragEvent dtde) {
- DefaultMutableTreeNode source = (DefaultMutableTreeNode)
- getJTree().getSelectionPath().getLastPathComponent();
- XmlEntry node = (XmlEntry) getNodeForEvent(dtde);
- node.setParent(
- (MutableTreeNode) getJTree().getModel().getRoot());
- if (source.toString().equals("Test")) {
- dtde.rejectDrag();
- } else {
- dtde.acceptDrag(dtde.getDropAction());
- }
- }
- public void drop(DropTargetDropEvent dtde) {
- DefaultMutableTreeNode source = (DefaultMutableTreeNode)
- getJTree().getSelectionPath().getLastPathComponent();
- int sourceRow = getJTree().getRowForPath(getJTree()
- .getSelectionPath());
- Point p = dtde.getLocation();
- TreePath path = getJTree().getPathForLocation(p.x, p.y);
- DefaultMutableTreeNode target = (DefaultMutableTreeNode) path
- .getLastPathComponent();
- saveAndReload(source, target, sourceRow, p);
- }
- public void dragEnter(DropTargetDragEvent dtde) {
- }
- public void dragExit(DropTargetEvent dte) {
- }
- public void dropActionChanged(DropTargetDragEvent dtde) {
- }
- }
Ich hoffe mir kann jemand weiterhelfen.
Vielen Dank im voraus.
Gruß und so
Loki2