JTree实现资源管理器,过滤文件和动态监听

    xiaoxiao2025-02-02  7

    Api 1.6 JTree


    1. Summary:

    树中特定的节点可以由 TreePath(封装节点及其所有祖先的对象)标识, 或由其显示行(其中显示区域中的每一行都显示一个节点)标识。 展开 节点是一个非叶节点(由返回 false 的 TreeModel.isLeaf(node) 标识), 当展开 其所有祖先时,该节点将显示其子节点。 折叠 节点是隐藏它们的节点。 隐藏 节点是位于折叠祖先下面的节点。 所有可查看 节点的父节点都是可以展开的,但是可以显示它们,也可以不显示它们。 显示 节点是可查看的并且位于可以看到它的显示区域。

    2. Lisener:

    请实现 TreeSelectionListener 接口,并使用方法 addTreeSelectionListener 添加实例。当选择更改时,将调用 valueChanged,即如果用户在同一节点上单击两次,则仅调用 valueChanged 一次。

    3. Constructor Summary

    我们常常使用Object[],作为参数传入。为每一个类创建一个TreeNode,但是往往来说,我们知道的是rootNode,我们希望做的是.add()

    private void leftIniti() { Border border1=BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),"源文件"); left.setBorder(border1); treeRoot =new DefaultMutableTreeNode(this.getClass().getName()); final JTree tree = new JTree(treeRoot);// to do create jtree addLisence(tree); JScrollPane jsp = new JScrollPane(tree);//add scroll left.setLayout(new BorderLayout()); left.add(jsp,BorderLayout.CENTER); }

    4. FileFilter in JTree

    new Filter

    public class MyFilter implements FileFilter { private String suffix; public MyFilter() { super(); // TODO Auto-generated constructor stub } public MyFilter(String suffix) { super(); this.suffix = suffix; } @Override public boolean accept(File pathname) { // 目录或者后缀相同 且 不是隐藏文件 return (pathname.isDirectory()||pathname.getName().endsWith(suffix))&&(!pathname.isHidden()); } }

    4. Using filter traverse in file and add node

    private void readDict(File path, DefaultMutableTreeNode dict) { MyFilter filter = new MyFilter(".java"); File list[] = path.listFiles(filter); if (list == null) return; for (int i = 0; i < list.length; i++) { File file_inlist = list[i]; // String filename = file_inlist.getName(); if (file_inlist.isDirectory()) { DefaultMutableTreeNode parent; parent = new DefaultMutableTreeNode(new MyFile(file_inlist)); // 添加空白文件夹节点 使子节点显示为文件夹 File stubadd = null; DefaultMutableTreeNode stub = new DefaultMutableTreeNode( stubadd); parent.add(stub); dict.add(parent); } else { DefaultMutableTreeNode son = new DefaultMutableTreeNode( new MyFile(file_inlist)); dict.add(son); } } }
    转载请注明原文地址: https://ju.6miu.com/read-1296011.html
    最新回复(0)