Java tutorial
import java.awt.Color; import java.awt.Component; import java.io.File; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.border.LineBorder; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.TreeSelectionModel; public class Main { public static void main(String[] args) { JFrame frame = new JFrame(); JScrollPane scrollPane = new JScrollPane(); scrollPane.setBounds(10, 11, 212, 500); frame.getContentPane().add(scrollPane); JTree tree = new JTree(addNodes(new File("."))); tree.setRootVisible(false); tree.setShowsRootHandles(true); tree.setBorder(new LineBorder(new Color(0, 0, 0))); tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); scrollPane.setViewportView(tree); tree.setCellRenderer(new FileTreeCellRenderer()); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); frame.setVisible(true); } public static DefaultMutableTreeNode addNodes(File dir) { DefaultMutableTreeNode node = new DefaultMutableTreeNode(dir); for (File file : dir.listFiles()) { if (file.isDirectory()) { node.add(addNodes(file)); } else { node.add(new DefaultMutableTreeNode(file)); } } return node; } } class FileTreeCellRenderer extends DefaultTreeCellRenderer { @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { if (value instanceof DefaultMutableTreeNode) { value = ((DefaultMutableTreeNode) value).getUserObject(); if (value instanceof File) { value = ((File) value).getName(); } } return super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); } }