The example of this article tells the Windows resource manager implemented by Java. Share it for everyone for your reference. The specifics are as follows:
Filetree.java file is as follows:
// filetree.java/*********************************************** ******************Author: Jason*Email: [email protected]*csdn blog: http://blog.csdn.net/unagain/ ****************************** ************************************************* **/package tl.exercise.swing; Import java.awt.comPonent; Import java.file; Import java.util.vector; Import javax.swing.icon; Import ing.jtree; Import javax.swing. Event.TreeExpansionEvent; Import Javax.swing.event.TreexpansionListener; Import Javax.swing.event.TreeModelllistener; Import Onevent; Import Javax.swing.event.TreeSelectionsListener; Import javax.Swing.filechooser.filesystemView; Import javax.swing.tree.defaultTreecellrenderr; Import javax.swing.treemodel; Import javax.swing.treepath; IC Final Long SerialVersionuid = 0; Private Filelist theList; Public Filetree (FileList list) {{ Thelist = list; setmodel (new filesystemmodel (new foodrnode ())); this.Setcellrenderer (new folderRenderer ())); Ener () {Public Void ValueChanged (TreeSelectionEvent TSE) {}}); this.SetselectionRow (0 );} Public Void FireValueChanged (TreeSelectionEvent TSE) {Treepath TP = TSE.GetNewleAdSelectionPath (); st.firetreeSelectionChanged ((PathNode) o); TheList.FiretreeselectChanged ((FolderNode) o) o ;} Public Void FiretreeCollapSed (Treepath Path) {Super.firetrecollapSed (PATH); Treepath CuRPATH = GetSelectionPath (); if (Path.isDescentant (Curpath ) {setselectionPath (path);}} Public Void Firetreewillexpand (TreePath Path) {System .out.println ("Path Will Expand is" + PATH);} Public Void FiretreewillCollapse (Treepath Path) {system.out.println ("Path Will Collapse is" + Path); } Class ExpansionListener Implements TreexPansionListener {Filetree Tree; Public ExpansionListener (Filetree FT) {tree = ft;} Public Void TreeCollapSed (TreeExpansionEvent Tee) {} Public Void Treexpanded (TreeeexPansionEvent Tee) {} }} Class FilesystemModel Implements Treemodel {I_FileSystem TheRoot; Char FileType = I_FileSystem.directory; Public FilesystemModel (I_FilesystemSystem fs) {Theeroot = fs;} Public Object Getroot () {Return thermoot;} Public Object Getchild (Object Parent, Int INDEX) {Return (I_FileSystem) nt) .getChild (FileType, Index);} Public int GetchildCount (Object Parent) {Return (I_FileSystem) Parent) .GetchildCount (FileType);} Public Boolean Isleaf (Object Node) {Return ((I_FileSystem) .isLeaf (Fileaf Type);} Public int Getindexofchild (Object Parent, Object Child) { Return ((I_FileSystem) Parent) .Getindexofchild (filetype, child);} Public Void ValueForpathchanged (Treepath Path, Object Newvalue) {} Public VOI d addreemodellistener (Treemodellistener L) {} Public Void RemoveTreemodelllllllListener (Treemodellistener L) {}} Internet I_FILESYSTEM { FINAL PUBLIC Static CHAR DIRECTORY = 'D'; Final Public Static CHAR FILE = 'F'; Final Public Static Char all = 'A'; Public icon Geticon (); System getChild (char filetype, int index); Public int GetchildCount (Char FileType); Public Boolean Isleaf (Char Filetype); Public int Getindexofchild (Char FileType, Object Child); El Explorer Windows File System Directly. * * <p> Perhaps there is a fatal bug with this design. For speed, each of instances * of this model contains file objects of subdirectory, then to now, there is't * any meth Od to read the unten unten. The Memory * Would be full of if the file system is large enough and jvm memery size * setted too small. * * <p> * ie wOON'TORE AREARESTENTION to solve it. It. GOAL of CURRENT a Exercise. * * @AUTHOR JASON */Class Foldernode Implements I_FILESYSTEM {// Private Static FolderNode theeroot; Private Static FilesystemView FsView; Private Boolean Showhiden = TRUE;;; Private file thefile; Private Vector <file> All = New Vector <file> () ; Private Vector <file> Folder = New Vector <file> (); / ** * Set that WHITHER Apply Hiden File. * * @param iFSHOW * / PUBLIC VOID SETSHIDEN (BOOLEN w) {showhiden = ifshow;} Public icon Geticon () () Return fsView.getSystemicon (theFile);} Public String Tostring () {// Return fsview. Return fsview.getSystemDisplayName (TheFile);} /** * Create a root node. by default, it should be the desktop in Window File * System. * * */ Public Foldernode () {fsview = filesystemView.getFileSystemView (); TheFile = fsview.gethomedirectory (); ();} Private void preparechildren () {file [] files = fsView.getFiles (theFile , showhiden); for (int i = 0; i <files.length; i ++) {all.add (files [i]); if (files [i] .isdirectory () &&! Files [i] .t love () .tolowerCase (). Endswith (". lnk") {Folder.add (Files [i]); DERNODE GETCHILD (Char Filetype, int index) {if (I_FileSystem.directory == FileType) {Return New Foldernode (Folder.get (Index)); n new foldernode (all.get (index)); } Else if (I_FileSystem.file == Filetype) {Return Null;} Else {Return Null;} Public Int GetChildCount (CHAR FILETYPE) {if (I_FileSystem.di Rectory == FileType) {Return Folder.size ();} Else if (i_fileSystem.all == filetype) {Return all.size ();} else if (I_Filesystem.file == FileType) {Return -1;} Else {Return -1;} Public BO Olean Isleaf (Char Filetype) { if (I_FileSystem.directory == FileType) {Return Folder.size () == 0;} Else if (I_FileSystem.all == filetype) {Return all.size () == 0;} ELSE If (I_FileSystem.file = = filetype) {Return True;} Else {Return True;} Public Int Getindexofchild (Char FileType, Object Child) {if (Child Instanceof FolderNode) {if (i_filesystem.directory == filetype) {Return Folder.indexof ( FOLDERNODE) Child) .THEFILE);} else if (i_filesystem.all == FileType) {Return all.indexof em.file == filetype) {Return -1 ;} Else {Retarn -1;}} Else {Return -1;}} Class FolderRenderRenderRENDS DefaultTreerenderer {Private Static Final LONG Serity U. Public Component GettreecellrenderComponent (JTREE TREE, Object Value, Boolean Sel, Boolean Expanded, Boolean Leaf , int Row, Boolean Hasfocus) {I_FileSystem Node = (I_FileSystem) value; icon icon = node.geticon (); SetOpenicon (ICON); SetClovei con (icon); Return Super.GettreerenderComponent (Tree, Value, SEL , Expanded, Leaf, ROW, Hasfocus);}}
It is hoped that this article is helpful to everyone's Java program design.