繁体   English   中英

为什么 JLabel 组件不转换为 JLabel,但没有给出任何错误?

[英]Why does a JLabel Component not convert into a JLabel, yet doesn't give any errors?

好的,所以我有这个 JFrame 框架,我正在尝试将所有组件加载到 JLabel ArrayList 中。 该框架有一个 LayeredPane 和大约 20 个 JLabel 分散在各处。 其中一些具有不同的 z-index/layer 索引

   ArrayList<JLabel> labelList = new ArrayList<>();
    
    for(Component i : frame.getComponents() ) {
        
        
        if (i instanceof JLabel) {
            labelList.add((JLabel) i);
        }
    }
    
    System.out.println(labelList);

但是当我尝试打印出 ArrayList 时,它只会打印一个空数组。

当我 hover over the.getComponents() 时,它实际上表明所有的 JLabels 实际上都包含在方法中。

而且它也不会给出任何错误,例如 Component 无法转换为 JLabel 等。

编辑:我按照@camickr 的建议做了,它表明只有 contentPane 被抓取。 我可能误解了 the.getComponents() 的工作原理。

edit2 只是将代码更改为:

    ArrayList<JLabel> labelList = new ArrayList<>();
    
    for(Component i : layeredPane.getComponents() ) { //layeredPane being the name of the JLayeredPane, suprisingly

            labelList.add((JLabel) i); 
    }
    
    System.out.println(labelList.toArray().length);

它有效。 我是一个非常愚蠢的人。

ArrayList<JLabel> labelList = new ArrayList<>();

for(Component i : layeredPane.getComponents() ) { //layeredPane being the name of the JLayeredPane, suprisingly

        labelList.add((JLabel) i); 
}

System.out.println(labelList.toArray().length);

是解决方案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM