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

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);
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值