为什么 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 时,它只是打印出一个空数组。
当我将鼠标悬停在 .getComponents() 上时,它实际上显示所有 JLabel 实际上都包含在该方法中。
而且它也不会给出任何错误,例如组件无法转换为 JLabel 等
编辑:我按照@camickr 的建议做了,它显示只有 contentPane 被抓取。我可能误解了 .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);
是解决方案。它没有工作,因为我试图从框架中获取所有内容,但框架上唯一的东西是分层窗格,所有其他组件都在那里。
好的,所以我有了这个 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 时,它只是打印出一个空数组。
当我将鼠标悬停在 .getComponents() 上时,它实际上显示所有 JLabel 实际上都包含在该方法中。
而且它也不会给出任何错误,例如组件无法转换为 JLabel 等
编辑:我按照@camickr 的建议做了,它显示只有 contentPane 被抓取。我可能误解了 .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);
是解决方案。它没有工作,因为我试图从框架中获取所有内容,但框架上唯一的东西是分层窗格,所有其他组件都在那里。