title: Formatting labels on a JTree used to display a file system tree
body: <p>I haven't used Swing components a lot so am a bit confused:
  I'm trying to display a file system tree using a JTree and used <a href="http://www.java2s.com/Code/Java/Swing-JFC/DisplayafilesysteminaJTreeview.htm" rel="nofollow">Ian Darwin's example</a>
  with a slight modification so it won't display hidden files:</p>
  
  <pre><code>import java.awt.BorderLayout;
  import java.awt.Color;
  import java.awt.Container;
  import java.awt.Dimension;
  import java.io.File;
  import java.util.Collections;
  import java.util.Vector;
  
  import javax.swing.BoxLayout;
  import javax.swing.JFrame;
  import javax.swing.JPanel;
  import javax.swing.JScrollPane;
  import javax.swing.JTree;
  import javax.swing.event.TreeSelectionEvent;
  import javax.swing.event.TreeSelectionListener;
  import javax.swing.tree.DefaultMutableTreeNode;
  
  /**
   * Display a file system in a JTree view
   * 
   * @version $Id: FileTree.java,v 1.9 2004/02/23 03:39:22 ian Exp $
   * @author Ian Darwin
   */
  public class FileTree extends JPanel {
    /** Construct a FileTree */
    public FileTree(File dir) {
      setLayout(new BorderLayout());
  
      // Make a tree list with all the nodes, and make it a JTree
      JTree tree = new JTree(addNodes(null, dir));
  
      // Add a listener
      tree.addTreeSelectionListener(new TreeSelectionListener() {
        public void valueChanged(TreeSelectionEvent e) {
          DefaultMutableTreeNode node = (DefaultMutableTreeNode) e
              .getPath().getLastPathComponent();
          System.out.println("You selected " + node);
        }
      });
  
      // Lastly, put the JTree into a JScrollPane.
      JScrollPane scrollpane = new JScrollPane();
      scrollpane.getViewport().add(tree);
      add(BorderLayout.CENTER, scrollpane);
    }
  
    /** Add nodes from under "dir" into curTop. Highly recursive. */
    DefaultMutableTreeNode addNodes(DefaultMutableTreeNode curTop, File dir) {
      String curPath = dir.getPath();
      DefaultMutableTreeNode curDir = new DefaultMutableTreeNode(curPath);
      if (curTop != null) { // should only be null at root
        curTop.add(curDir);
      }
      Vector ol = new Vector();
      String[] tmp = dir.list();
      for (int i = 0; i &lt; tmp.length; i++)
        ol.addElement(tmp[i]);
      Collections.sort(ol, String.CASE_INSENSITIVE_ORDER);
      File f;
      Vector files = new Vector();
      // Make two passes, one for Dirs and one for Files. This is #1.
      for (int i = 0; i &lt; ol.size(); i++) {
        String thisObject = (String) ol.elementAt(i);
        String newPath;
        if (curPath.equals("."))
          newPath = thisObject;
        else
          newPath = curPath + File.separator + thisObject;
        if ((f = new File(newPath)).isDirectory())
          addNodes(curDir, f);
        else
          if(!new File(thisObject).isHidden()) files.addElement(thisObject);
      }
      // Pass two: for files.
      for (int fnum = 0; fnum &lt; files.size(); fnum++)
        curDir.add(new DefaultMutableTreeNode(files.elementAt(fnum)));
      return curDir;
    }
  
    public Dimension getMinimumSize() {
      return new Dimension(200, 400);
    }
  
    public Dimension getPreferredSize() {
      return new Dimension(200, 400);
    }
  
    /** Main: make a Frame, add a FileTree */
    public static void main(String[] av) {
  
      JFrame frame = new JFrame("FileTree");
      frame.setForeground(Color.black);
      frame.setBackground(Color.lightGray);
      Container cp = frame.getContentPane();
  
  
      cp.add(new FileTree(new File("/Users/"+System.getProperty("user.name")+"/Downloads")));
  
      frame.pack();
      frame.setVisible(true);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
  }
  </code></pre>
  
  <p>By default folder nodes display the full path, rather than the folder name. 
  Is it possible to display just the folder name ? If so, how ?</p>