以树结构显示文件目录
2011-09-09 13:39 Rollen Holt 阅读(1424) 评论(0) 编辑 收藏 举报下面打算以树结构显示文件目录:
先来个热身吧,先实现下面的图像再说,回忆一下Jtree的用法。其实主要是我对swing不熟悉,哈哈。
代码如下:
package File; import java.awt.FlowLayout; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTextArea; import javax.swing.JTree; public class TreeSimple extends JFrame{ public TreeSimple(){ JPanel panel = new JPanel(); JTextArea area = new JTextArea(5, 30); JTree tree = new JTree(); JScrollPane js1 = new JScrollPane(tree, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); panel.setLayout(new FlowLayout()); JScrollPane js = new JScrollPane(area); JSplitPane jsplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, js1, js); panel.add(jsplit); setContentPane(panel); setSize(400, 400); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args){ new TreeSimple(); } }
下面才是正式的
运行结果如下:
package File; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; 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; import javax.swing.tree.TreePath; public class Disktree extends JFrame implements TreeSelectionListener{ DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(); JTree tree = new JTree(rootNode); JPanel panel = new JPanel(); public Disktree(){ tree.addTreeSelectionListener(this); JScrollPane js = new JScrollPane(tree, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); panel.add(tree); setContentPane(panel); addWindowListener(new WindowAdapter(){ @Override public void windowActivated(WindowEvent e){ File[] files = File.listRoots(); for(File file : files){ DefaultMutableTreeNode node = new DefaultMutableTreeNode( file); rootNode.add(node); } tree.expandPath(new TreePath(rootNode)); } }); setSize(500, 500); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args){ new Disktree(); } @Override public void valueChanged(TreeSelectionEvent e){ TreePath path = e.getPath(); DefaultMutableTreeNode node = (DefaultMutableTreeNode) path .getLastPathComponent(); Object userObject = node.getUserObject(); if(!(userObject instanceof File)){ return; } File folder = (File) userObject; if(!folder.isDirectory()){ return; } File[] files = folder.listFiles(); for(File file : files){ node.add(new DefaultMutableTreeNode(file)); } } }
==============================================================================
本博客已经废弃,不在维护。新博客地址:http://wenchao.ren
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他
们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其
实我是一个程序员
==============================================================================