在Hashmap中迭代JPanel组件

时间:2014-06-22 22:25:39

标签: java swing jpanel

我有一个JPanel组件的Hashmap,我试图迭代和样式,我以前在JPanel上使用JButton做了这个,但是我遇到了麻烦获取JLabel特定的属性。我得到的代码:

 for (Component item : imageAreas.values()) {
        // Style components item.setBorder(BorderFactory...);
    }

问题在于组件没有setBorder()属性,有没有什么方法可以在for循环中将组件项转换为JPanel? - 我尝试在所有内容中添加(JLabel),但它并不喜欢。 imageAreas是hashmap。

2 个答案:

答案 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