Swing JTree TreePath zu Windows Pfad?

N4pst3r

Mitglied
Hiho
Ich habe wieder ein JTree problem. Ich habe das schöne FileSystem von Kirill genommen:
Showing the file system as a Swing JTree Pushing Pixels
aber ich bekomme wieder den TreePath nicht ordentlich verarbeitet.

Wenn ich einen Node auswähle und der
TreeSelectionListener
aufgerufen wird, möchte ich den Pfad Systemverständlich (Windows) casten:
[JAVA=249]public void valueChanged( TreeSelectionEvent e ) {
TreePath tpSelection = tree.getSelectionPath();
Object objSelectedNode = tpSelection.getLastPathComponent();
DefaultMutableTreeNode dmtn = new DefaultMutableTreeNode( objSelectedNode );

Object objSourceObject = dmtn.getUserObject();
File fSourceFile = new File( objSourceObject.toString() );
String sSourcePathAbsolute = fSourceFile.getAbsolutePath();

System.out.println( sSourcePathAbsolute );
}[/code]
Die Ausgabe ist:
Code:
C:\java\JavaBackupSoftware\javabackupsoftware.TreeExplorer$FileTreeNode@142a80d
Es soll aber z.B. folgendes Ausgegeben werden:
Code:
C:\Dokumente und Einstellungen\Public
Ich komm irgendwie mit der Klasse JTree nicht klar >.<

Weiß einer Rat?
 
Zeile 252 ist völliger Käse. Warum sollte man ein Objekt (hierbei handelt es sich um ein FileTreeNode) in einen DefaultMutableTreeNode stecken nur um es in der nächsten Codezeile wieder rauszuholen :lol:
FileTreeNode ist nun mal keine String Repräsentation einer Datei bzw. eines Dateipfades.
Allerdings enthält die Klasse das passende File Objekt. Das heißt man müsste diese nur um eine Methode erweitern, um an diese Objekt zu kommen.

Wenn man fremden Code nutzt sollte man sich den auch mal anschauen und damit auseinandersetzen.
 
Echt nicht. Ich bin die Klasse zig mal durchgegangen. :autsch:
Jetzt hab ichs danke

[JAVA=249]public void valueChanged( TreeSelectionEvent e ) {
TreePath tpSelection = tree.getSelectionPath();
FileTreeNode selectedNode = (FileTreeNode) tpSelection.getLastPathComponent();

File fSourceFile = selectedNode.file;
String sSourcePathAbsolute = fSourceFile.getAbsolutePath();

System.out.println( sSourcePathAbsolute );
}[/code]

//close
 

Zurück
Oben