我有一个JPanel组件的Hashmap,我试图迭代和样式,我以前在JPanel上使用JButton做了这个,但是我遇到了麻烦获取JLabel特定的属性。我得到的代码:
for (Component item : imageAreas.values()) {
// Style components item.setBorder(BorderFactory...);
}
问题在于组件没有setBorder()属性,有没有什么方法可以在for循环中将组件项转换为JPanel? - 我尝试在所有内容中添加(JLabel)
,但它并不喜欢。 imageAreas是hashmap。
答案 0 :(得分:1)
有什么方法可以将组件项目转换为JPanel?
JPanel panel = (JPanel)item;
item.setBorder(...);
以上假设你确实在Hashmap中有JPanel。
问题是,当您可以使用包含JPanels的Hashmap时,为什么使用包含组件的Hashmap?要创建HashMap,您可以执行以下操作:
HashMap<String, JPanel> imageAreas = new HashMap<String, JPanel>();
然后访问您可以执行的面板:
for (JPanel panel : imageAreas.values()) {
panel.setBorder(BorderFactory...);
}
答案 1 :(得分:1)
您已经纠正了此错误发生的原因(&#34;组件&#34;)没有setBorder()属性,并且您正在关于转换为{{1}的正确轨道}}。
我尝试在所有内容之前添加(JPanel),但它不是那样的。
这可能是因为数组中的某些组件不是JPanel
s,因此当您尝试将它们转换为JPanel
时会抛出ClassCastException
。所以,你需要先检查一下:
JPanel