PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java-Code-Snippets



GamerForSale
20.05.2007, 17:29
Hallo allerseits,

hiermit starte ich einen Sticky-Thread zum Theme Java-Code-Snippets. Jeder der nützliche
(Java-)Code-Teile zur Hand hat (idealerweise selbst geschrieben ;)) kann sie hier veröffentlichen.

Falls ihr Interesse an ähnlichen Snippet-Threads, jedoch für andere Sprachen wie PHP, Perl o.ä. habt, gebt mir
per PN oder Mail Bscheid und ich öffne einen entsprechenden Thread.

Nun - lange Rede kurzer Sinn - hier zum ersten Snippet :

File-Explorer mittels JTree :

Die folgende Java-Klasse erlaubt es eine JTree-Representation eures File-Systems nachzubauen (aktuell noch recht funktionsarm ;) ), welche in einem JFrame angezeigt wird und in einem JScrollPane eingebettet ist.

Um es auf eurem System zu testen müsst ihr lediglich die Klassen - Variable "rootName" gemäß eurer Hierarchy abändern.

@Linux-User: Wollt ihr das File-System komplett vom root abwärts aufbauen weist der Variable "rootName" einfach den Stringwert "/" zu.

@Windows-User: In Windows werden statt der Unix-typischen einfachen "Slashes" die "Backslashes" genutzt - wie genau die Pfadangabe bei euch lauten muss, weiß ich nicht, tippe aber auf etwas wie : "C:\MeinOrdner\..."



package de.gfs.explorer;

import javax.swing.*;
import javax.swing.tree.*;

import java.awt.BorderLayout;
import java.io.*;
import java.util.*;

import de.gfs.visuals.*;

/**
* @author GamerForSale
*
*This class builds a File-Hierachy from the given root-Point on<br>
*Be aware though - the method "buldFileSystem" is highly recursive<.br>
*Simply substitute the given String "rootName" with the directory-path (from root onwards)<br>
*from where you want to build the fileSystem.
*
*Annotations:
*This was written in Eclipse 3.2<br>
*Compiler-Compliance-Level : JDK 6.0 (Update 1)
*OS : Linux (Xubuntu)
*
*/
public class GFsExplorerGUI
{
private static DefaultMutableTreeNode root;
private static String rootName = "/home/xubuntu/Programming";

public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable() {

public void run()
{
createGUI();
}
});
}//End of main

public static void createGUI()
{
JFrame frame = GFsFrameFactory.createFrame("GFsFileBrowser");
JPanel contentPane = GFsContentPane.newInstance("FileBrowser");

//Creating root of the users file-System
File [] rootDir = File.listRoots();
root = new DefaultMutableTreeNode(new File(rootName));

//Adding all other directories to the JTree
buildFileSystem(new File(rootName), root);

//Creating a JTRee with given root
JTree browser = new JTree (root);


//Adding JTree to panel
contentPane.add(new JScrollPane(browser), BorderLayout.CENTER);

//Adding to frame
frame.add(contentPane);
frame.pack();
frame.setVisible(true);
}

//Recursively builds the fileSystem
public static void buildFileSystem(File file, DefaultMutableTreeNode node)
{
for (File f : file.listFiles())
{
//If file is a directory, call method recursively and keep adding nodes to it
if (f.isDirectory())
{
//Create new TreeNode, with the current File(Name)
DefaultMutableTreeNode self = new DefaultMutableTreeNode(f.getName());
//Add this new Node to the current Tree-Node (node)
node.add(self);
//recursively call this method and make the new node the current Folder (self)
buildFileSystem(f, self);
}
else
{
node.add(new DefaultMutableTreeNode(f.getName()));
}
}//End of for
}//End of method
}//End of class