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
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