Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Hashmap中迭代JPanel组件_Java_Swing_Jpanel - Fatal编程技术网

Java 在Hashmap中迭代JPanel组件

Java 在Hashmap中迭代JPanel组件,java,swing,jpanel,Java,Swing,Jpanel,我有一个JPanel组件的Hashmap,我正在尝试迭代和样式化,我以前在JPanel上用JButtons做过,但是我在获取特定于JLabel的属性时遇到了问题。我得到的代码是: for (Component item : imageAreas.values()) { // Style components item.setBorder(BorderFactory...); } 问题是组件没有setBorder()属性,有没有办法将组件项强制转换为for循环中的JPa

我有一个JPanel组件的Hashmap,我正在尝试迭代和样式化,我以前在JPanel上用JButtons做过,但是我在获取特定于JLabel的属性时遇到了问题。我得到的代码是:

 for (Component item : imageAreas.values()) {
        // Style components item.setBorder(BorderFactory...);
    }
问题是组件没有setBorder()属性,有没有办法将组件项强制转换为for循环中的JPanel我尝试在所有内容前面添加
(JLabel)
,但它不喜欢这样。imageAreas是hashmap

有没有办法将组件项强制转换为JPanel

以上假设Hashmap中确实有jpanel

问题是,当您可以使用包含JPanel的Hashmap时,为什么要使用包含组件的Hashmap?要创建HashMap,可以执行以下操作:

HashMap<String, JPanel> imageAreas = new HashMap<String, JPanel>();

关于发生此错误的原因,您是正确的(“组件没有setBorder()属性”),关于转换到
JPanel
,您的思路是正确的

我试着在所有东西前面添加(JPanel),但它不喜欢这样

这可能是因为数组中的某些组件不是
JPanel
s,因此当您尝试将它们转换为
JPanel
时,会抛出
ClassCastException
。因此,您需要首先检查:

for (Component item : imageAreas.values()) {
    if (item.instanceOf(JPanel.class)) { 
       JPanel pan = (JPanel)item;
       pan.setBorder(...);
    }
}

啊哈没有错误,是的,只是JPanels-谢谢!你知道我从没想过。。。为什么我不直接使用JPanels。。好问题:L-你知道我现在遇到的第二个问题吗?我的意思是键入“JLabel”而不是JPanel-typo:P
for (JPanel panel : imageAreas.values()) {
        panel.setBorder(BorderFactory...);
}
for (Component item : imageAreas.values()) {
    if (item.instanceOf(JPanel.class)) { 
       JPanel pan = (JPanel)item;
       pan.setBorder(...);
    }
}