当前位置:  开发笔记 > 编程语言 > 正文

通过容器和组件迭代/递归以查找给定类的对象?

如何解决《通过容器和组件迭代/递归以查找给定类的对象?》经验,为你挑选了1个好方法。



1> Cem Catikkas..:

在这里同意Tom ...你的问题是你已经传递了ListJLabels 添加到你的递归方法而你也将它返回 - 因此不止一次将相同的项添加到你的列表中.在政治上更正确的术语 - List是你的累积者.

你的方法应该是这样的:

public void harvestJLabels(Container c, List l) {
    Component[] components = c.getComponents();
    for(Component com : components) {
        if(com instanceof JLabel) {
            l.add((JLabel) com);
        } else if(com instanceof Container) {
            harvestJLabels((Container) com, l));
        }
    }
}

然后你可以有一个辅助方法来启动这个收获:

public List harvestJLabels(Container c) {
    List jLabels = new ArrayList();
    harvestJLabels(c, jLabels);
    return jLabels;
}

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有