verschieben von Dateien auf der Festplatte über TreePaths funktioniert nicht

N4pst3r

Mitglied
Tach

Ich habe in einem JTree eine Drag and Drop Methode eingebaut. Die funktioniert auch wunderbar. Nur sollen sich die Dateien auf der Festplatte ebenfalls verschieben. Allerdings geben mir die zugehörigen Pfade der Dateien aus dem JTree immer solche [C:\, bin, boot.ini] aus. Damit kann ich ja nicht anfangen wenn ich die Dateien über Files verschieben will.
Habt ihr ne Idee wie ich das bewerkstelligen könnte?

relevanter Code:
Java:
public void drop( DropTargetDropEvent dtde ) {

	TreePath tpSelectionPath = tree.getSelectionPath();
	TreePath tpSourcePath = tpSelectionPath.getParentPath();
	DefaultMutableTreeNode dmtSelectedNode = (DefaultMutableTreeNode) tpSelectionPath.getLastPathComponent();

	Point pDropLocation = dtde.getLocation();
	TreePath tpTargetPath = tree.getClosestPathForLocation(
		pDropLocation.x, pDropLocation.y );

	DefaultMutableTreeNode dmtTargetParentNode = (DefaultMutableTreeNode) tpTargetPath.getLastPathComponent();
	DefaultMutableTreeNode dmtSourceParentNode = (DefaultMutableTreeNode) tpSourcePath.getLastPathComponent();

	dmtSourceParentNode.remove( dmtSelectedNode );
	dmtTargetParentNode.add( dmtSelectedNode );

	String sFile = new String( tpSelectionPath.toString() );
	String sDir = new String( tpTargetPath.toString() );

	File fFile = new File( sFile.replaceAll( ", ", "/") );
	File fDir = new File( sDir.replaceAll( ", ", "/") );

	boolean success = fFile.renameTo( new File( fDir, fFile.getName() ) );
	if( !success ) {
		System.out.println( "Konnte die Datei " + fFile + " nicht nach" +
			" " + fDir + " verschieben." );
	}

	System.out.println( "Die Datei: " + fFile );
	System.out.println( "Hier rein: " + fDir );

	dtde.dropComplete( true );
	tree.updateUI();

}
} ) );

Ich habe versucht die Trennungen der Pfade [ , ] mit einem Slash zu ersetzen. Das klappt erstmal recht gut. Allerdings machen mir die eckigen Klammern noch Probleme :bahnhof:
 
Zuletzt bearbeitet:

Michael...

Top Contributor
Was steckt denn in den TreeNodes? Ich würde da das File Objekt reinstecken, dann müsste man sich den Pfad nicht aus den Informationen aus dem TreePath zusammenbasteln. Wenn Da allerdings nur der Dateiname drinsteht, bleibt Dir nichts anderes übrig.
 

N4pst3r

Mitglied
Sind nur Namen. Die Nodes werden mit Files über Schleifen befüllt aber denen sind ja nur Namen zugeteilt worden.
Aber ich brauche ja nur den Pfad der selektierten Datei die ich auch mit der DnD-Methode verschiebe. Der wird mir ja nur nicht richtig angegeben
 

Michael...

Top Contributor
Aber ich brauche ja nur den Pfad der selektierten Datei die ich auch mit der DnD-Methode verschiebe.
Du selektierst/verschiebst keine Datei, Du verschiebst nur einen Knoten der einen String enthält, der dem Namen der Datei entspricht. Woher soll der Knoten also den Pfad der Datei kennen?
Deswegen mein Vorschlag das File Objekt in den Knoten zu stecken.
 

N4pst3r

Mitglied
ja aber der Baum baut sich genauso auf wie die festplatte deswegen ist der Pfad der Nodes identisch mit dem der Datei die auf der Festplatte verschoben werden soll.
Wie sollte ich denn das File Objekt in den Node stecken?
 

Michael...

Top Contributor
ja aber der Baum baut sich genauso auf wie die festplatte deswegen ist der Pfad der Nodes identisch mit dem der Datei die auf der Festplatte verschoben werden soll.
Der Aufbau des Baumes ist in dem Fall ja egal. (Ausser man benötigt den TreePath o.ä. um den Dateipfad nachzubauen;-)
Wie sollte ich denn das File Objekt in den Node stecken?
Ein DefaultMutableTreeNode kann beliebige Objekte auf nehmen:
Java:
DefaultMutableTreeNode fileNode = new DefaultMutableTreeNode(new File("C:/temp/test.txt"));
Durch Verwendung eines passenden TreeCellRenderers kann man, dann Einfluss auf die Darstellung des Knotens nehmen, z.B. damit nur der Dateiname angezeigt wird.
 

N4pst3r

Mitglied
hä? ja moment mal ich glaub wir reden aneinander vorbei :)
ohne hier jetzt unendlich viel code zu posten, folgendes:

Ich kann doch den Pfad in dem File-Objekt garnicht angeben wenn der mir nicht bekannt ist.
Ich sehe ja nur den Baum und verschiebe durch Drag and Drop die Verzeichnisse und Dateien (ja sind nur Nodes). Diese sind ja schon als File-Objekte ind die Nodes gebunden worden und haben über eine Schleife einen Pfad mitbekommen (so wie: "C:\Programme\test\test.txt").
Da Ich ja für diesen sozusagen "unendlich großen Baum" nicht jeden Node und jedes File-Objekt manuell verschieben möchte, muss ich in die Methode schreiben, dass die Metode sich den Pfad von dem selektierten Node geben lässt und diesen dann als File-Objekt auf der Festplatte genauso verschiebt wie im Baum.
Da kann ich ja nicht jedes File einzeln mit einem Pfad versehen den ich manuell angebe.

Und genau diesen Pfad für das File möchte ich ja haben.

Ich hoffe das triffts ;)
 

Michael...

Top Contributor
Bin mir auch nicht mehr sicher, ob wir uns richtig verstehen!
Mein Verständnis:
- es wird durch "auslesen" der Festplatte ein Baum erstellt, der die Verzeichnisse und Dateien des Laufwerks repäsentiert
- mittels DnD sollen, Dateien oder ganze Verzeichnisse verschoben werden
==> Also ein Datei Explorer wie in jedes graphische Betriebssystem anbietet?
 

Michael...

Top Contributor
Und eingelesen werden die Daten vermutlich mittels File und listFiles()... ?
Dann hätte man ja die File Objekte und deren Pfad. Wenn man jetzt statt einfach nur den Namen der Datei oder des Verzeichnisses in den TreeNode das File Objekt steckt, kann man jederzeit die Knoten nach dem Pfad der Datei/ des Verzeichnisses fragen, das sie repräsentieren.
Java:
//Erstellen des Baums und der Knoten
...
DefaultMutableTreeNode node = new DefaultMutableTreeNode(new File("C:/temp/test"));
...
//Ein Knoten wird selektiert 
node = (DefaultMutableTreeNode)tree.getSelectionPath().getLastPathComponent();
String path = ((File)node.getUserObject()).getAbsolutePath();
System.out.println("Der durch den TreeNode repäsentierte Pfad lautet: " + path);
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Redeason Objekte in meiner GUI verschieben AWT, Swing, JavaFX & SWT 1
H JavaFX Timeline II: Verschieben einer ImageView AWT, Swing, JavaFX & SWT 16
frager2345 JTextLabel im Flowlayout verschieben AWT, Swing, JavaFX & SWT 4
U JavaFX CheckBoxen in GUI verschieben AWT, Swing, JavaFX & SWT 20
M Polygon per Drag&Drop verschieben AWT, Swing, JavaFX & SWT 26
F Popup Menu etwas verschieben AWT, Swing, JavaFX & SWT 2
K JavaFX Element in HBOX nach rechts verschieben AWT, Swing, JavaFX & SWT 2
J Button lässt sich nicht auf dem JPanel verschieben AWT, Swing, JavaFX & SWT 5
M Swing JPanel flüssig verschieben AWT, Swing, JavaFX & SWT 5
T AWT Grafik"Array" einzelne Elemente verschieben AWT, Swing, JavaFX & SWT 1
N JLabel in JTabbedPane verschieben AWT, Swing, JavaFX & SWT 2
B JavaFX Viewport verschieben AWT, Swing, JavaFX & SWT 3
C LayoutManager Bei verkleinern des Fensters, verschieben sich JPanels übereinander. AWT, Swing, JavaFX & SWT 7
C Swing Geschachteltes GUI mit BorderLayout - Vertikal & horizontal Verschieben AWT, Swing, JavaFX & SWT 1
M Swing JPanel innerhalb eines Frames verschieben AWT, Swing, JavaFX & SWT 3
Y Titel Verschieben AWT, Swing, JavaFX & SWT 11
Z Bildervorschau, MouseDragged das Bild verschieben AWT, Swing, JavaFX & SWT 1
M label mit icon verschieben. AWT, Swing, JavaFX & SWT 1
R Swing Elemente verschieben sich im GBL beim Ein/Ausblenden AWT, Swing, JavaFX & SWT 0
W Buttons verschieben AWT, Swing, JavaFX & SWT 3
Z Plot nach links verschieben!! AWT, Swing, JavaFX & SWT 1
M 3D-Grafik Denkfehler bei Verschieben von Shapes AWT, Swing, JavaFX & SWT 0
T JLabel Nullpunkt verschieben AWT, Swing, JavaFX & SWT 6
K JavaFX Spalten der Tabellen verschieben AWT, Swing, JavaFX & SWT 2
P JList/JScroolPane Text verschieben und text wrappen AWT, Swing, JavaFX & SWT 3
L JFrame von der Taskleiste zu den ausgeblendeten Symbolen verschieben AWT, Swing, JavaFX & SWT 2
O Swing Spalten-Position nach verschieben AWT, Swing, JavaFX & SWT 6
T Swing JButton per Drag&Drop verschieben AWT, Swing, JavaFX & SWT 5
L Componenten im JFrame an genaue stelle verschieben. AWT, Swing, JavaFX & SWT 2
D JSplitPane lässt sich nicht verschieben AWT, Swing, JavaFX & SWT 3
A JLabel verschieben AWT, Swing, JavaFX & SWT 9
bluerob JComponenten verschieben sich bei Fenster wechseln AWT, Swing, JavaFX & SWT 3
J jFrame verschieben verhindern AWT, Swing, JavaFX & SWT 4
H Bild mit KeyListener verschieben AWT, Swing, JavaFX & SWT 2
R JTextField Eingabefeld innerhalb verschieben AWT, Swing, JavaFX & SWT 2
P Rectangle verschieben AWT, Swing, JavaFX & SWT 11
C Bild auf Panel vergrößern und verschieben AWT, Swing, JavaFX & SWT 4
P Objekte anzeigen und verschieben - wie? AWT, Swing, JavaFX & SWT 6
H LayoutManager Panel verschieben sich AWT, Swing, JavaFX & SWT 5
B Element schrittweise verschieben AWT, Swing, JavaFX & SWT 2
G Swing JPanel per Maus verschieben AWT, Swing, JavaFX & SWT 5
K Button verschieben AWT, Swing, JavaFX & SWT 4
T 2D-Grafik gezeichnetes Bild verschieben - rand bleibt sichtbar AWT, Swing, JavaFX & SWT 2
propra Mehrere Objekte gleichzeitig verschieben AWT, Swing, JavaFX & SWT 7
V Swing JScrollPane Viewport verschieben AWT, Swing, JavaFX & SWT 2
propra Objekte auf Zeichenfläche verschieben AWT, Swing, JavaFX & SWT 2
P Swing JTable null values an das Ende verschieben AWT, Swing, JavaFX & SWT 2
M verschieben der Objekte in JPanel nur stückchenweise möglich AWT, Swing, JavaFX & SWT 14
B FlowLayout Buttons verschieben? AWT, Swing, JavaFX & SWT 13
K JButtons innerhalb eines JPanels verschieben (DRAG&DROP) AWT, Swing, JavaFX & SWT 5
R Swing Verschieben eines jButtons mittels MouseDragged AWT, Swing, JavaFX & SWT 4
Z 2D-Grafik Bild auf JPanel verschieben AWT, Swing, JavaFX & SWT 4
D Grafik über JPanels hinweg verschieben AWT, Swing, JavaFX & SWT 2
D Swing Swing Komponenten verschieben AWT, Swing, JavaFX & SWT 7
B Swing AbstractTableModel rows verschieben AWT, Swing, JavaFX & SWT 2
S 2D-Grafik Shapes auf Zeichenfläche gleichmäßig verschieben AWT, Swing, JavaFX & SWT 5
Burny91 Swing Vertical JSplitPane lässt sich nicht nach rechts verschieben AWT, Swing, JavaFX & SWT 2
E Swing Rechteck und Kreise verschieben AWT, Swing, JavaFX & SWT 3
F Swing Objekte mit Maus verschieben AWT, Swing, JavaFX & SWT 8
E Swing Drag n Drop Verschieben von Labels o.ä. AWT, Swing, JavaFX & SWT 10
K Swing Elemente auf Zeichenfeld verschieben AWT, Swing, JavaFX & SWT 8
C Drag and Drop JPanel auf JPanel nach drop erneut verschieben? AWT, Swing, JavaFX & SWT 3
B JLabel mittels Timer und setLocation verschieben AWT, Swing, JavaFX & SWT 3
M Buttons per Drag & Drop im GridBagLayout verschieben AWT, Swing, JavaFX & SWT 6
C paintComponent mit Maus verschieben - wie? AWT, Swing, JavaFX & SWT 2
T Swing JComboBox: Listeneinträge mit der Maus verschieben AWT, Swing, JavaFX & SWT 5
J showMessageDialog nicht über frame verschieben AWT, Swing, JavaFX & SWT 6
R Bereiche auf Panel verschieben AWT, Swing, JavaFX & SWT 2
U SWT Linien verschwinden nach Verschieben AWT, Swing, JavaFX & SWT 3
D Swing Spaltenköpfe verschieben sich nicht mit, wenn man an horizontaler Scrollbar zieht AWT, Swing, JavaFX & SWT 9
R Swing Frame verschieben AWT, Swing, JavaFX & SWT 3
C JTable mit RowSorter und Drag & Drop: Zeile verschieben AWT, Swing, JavaFX & SWT 4
D Swing Buttons verschieben sich bei umbennenung! AWT, Swing, JavaFX & SWT 3
R Rows und Columns in JTable verschieben? AWT, Swing, JavaFX & SWT 8
N RCP/SWT View durch Programm auf 2. Bildschirm verschieben AWT, Swing, JavaFX & SWT 2
O JTable Zeilen "nach oben" verschieben AWT, Swing, JavaFX & SWT 3
G Listenelemente mit der Maus verschieben AWT, Swing, JavaFX & SWT 4
K JTable Spalten nicht verschieben AWT, Swing, JavaFX & SWT 2
F Verschieben einer Messnadel auf einem Bild AWT, Swing, JavaFX & SWT 2
S Buttons verschieben mit Swing AWT, Swing, JavaFX & SWT 5
R JPanel durch "klicken und ziehen" verschieben AWT, Swing, JavaFX & SWT 8
H Tabelle: Spaltenüberschriften verschieben sich AWT, Swing, JavaFX & SWT 2
T Fenster verschieben => Wann fertig? AWT, Swing, JavaFX & SWT 8
T Synchrones Window-verschieben AWT, Swing, JavaFX & SWT 4
K JFrame verschieben / Inhalt ändern AWT, Swing, JavaFX & SWT 5
E Komponenten auf Zeichenfläche gruppieren u. verschieben AWT, Swing, JavaFX & SWT 3
Tom299 JTable - Spalten verschieben deaktivieren? AWT, Swing, JavaFX & SWT 3
F "Verschieben" des paint-Bereichs AWT, Swing, JavaFX & SWT 4
vogella JPanel Größe verschieben AWT, Swing, JavaFX & SWT 2
B Objekte auf Fenster verschieben. Bewegliche jPanels. AWT, Swing, JavaFX & SWT 5
J Nochmal Drag&Drop, ABER: Object verschieben AWT, Swing, JavaFX & SWT 2
D Rechtecke verschieben? AWT, Swing, JavaFX & SWT 2
S drag&drop bild verschieben AWT, Swing, JavaFX & SWT 14
M gezeichnete Punkte dynamisch verschieben mit mousedragged AWT, Swing, JavaFX & SWT 4
B Verschieben einer Komponente unterbinden AWT, Swing, JavaFX & SWT 6
TheJavaKid Kreis, Rechteck, Linie. verschieben AWT, Swing, JavaFX & SWT 5
P Bild verschieben AWT, Swing, JavaFX & SWT 2
J Grafik "sichtbar" verschieben AWT, Swing, JavaFX & SWT 2
B 2 fenster gleich verschieben AWT, Swing, JavaFX & SWT 3
O Jtable verschieben von rows AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben