[英]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.