【发布时间】:2014-03-01 20:29:01
【问题描述】:
我有一个程序,它接受一个输入文件,从中提取一个颜色字 + 十六进制值(例如红色 0xFF0000)。我的代码工作得很好,除了我试图用 HashMap 替换我的 2 个数组列表......那是事情发生了错误的地方。我的代码恢复到我认为之前的状态,但现在按下单选按钮时它不会改变颜色。有人想看看吗?
public HashMapTests() {
JPanel p1 = new JPanel();
this.getContentPane().setLayout(new GridLayout(5,4));
ButtonGroup group = new ButtonGroup();
for (int i = 0; i < colorCollection.size(); i++) {
jrbColor[i] = new JRadioButton(colorCollection.get(i));
jrbColor[i].setText(colorCollection.get(i));
group.add(jrbColor[i]);
p1.add(jrbColor[i]);
}
for(int i = 0; i < colorCollection.size(); i++){
jrbColor[i].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
for (int j = 0; j < colorCollection.size(); j++){
String hexColor = hexCollection.get(j);
if(hexCollection.get(j).equals(((JRadioButton)e.getSource()).getText())){
getContentPane().setBackground(Color.decode(hexColor));
repaint();
}
}
}
});
}
add(p1);
}
【问题讨论】:
-
是时候做一点调试了,我想。
-
您的输入文件看起来如何?
-
@LeosLiterak:它们很可能有两列字符串——颜色名称后跟颜色 int 十六进制字符串的字符串表示形式。即
Red 0xffff0000。无论如何,这是我的猜测。 -
你的HashMap在哪里?我看到两个 ArrayList。
-
@LeosLiterak 我无法让 HashMap 以我希望的方式运行,所以我放弃了它并返回到两个数组。我打算继续研究 HashMap。是的,我的输入看起来像:
Gray 0x707070 Purple 0x990099 Orange 0xFF6600 LightBlue 0x6666FF
标签: java swing for-loop actionlistener