gpt4 book ai didi

java - 有人能告诉我为什么我的 actionListener for 循环不起作用吗?

转载 作者:行者123 更新时间:2023-12-02 06:07:58 26 4
gpt4 key购买 nike

我有一个程序,它接受一个输入文件,从中提取一个颜色字+十六进制值(例如红色0xFF0000)。我的代码工作得很好,除了我试图用 HashMap 替换我的 2 个 arrayList...这就是事情发生错误的地方。我的代码回到了我认为之前的状态,只是现在按下单选按钮时它不会改变颜色。有人想看一下吗?

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);
}

最佳答案

第一次调查:

while (colorCollection.size() < 10)

应替换为

if (colorCollection.size() < 10)

第二次观察:

jrbColor[i] = new JRadioButton(colorCollection.get(i));
jrbColor[i].setText(colorCollection.get(i));

第二行没用,请参阅构造函数的javadoc。

第三:

附加监听器的第二个循环是无用的,您可以将此代码放入创建按钮的第一个循环中。

最后:

if (hexCollection.get(j).equals(((JRadioButton) e.getSource()).getText())) {

您将此处的 hexCollection 内容与单选按钮文本进行比较,但该按钮具有来自 colorCollection 的标签。我无法查看您的文件,但我认为这将是问题所在。

map 解决方案:

初始化

String name = fileInput.next();
String hexValue = fileInput.next();
colors.put(name, hexValue);

按钮

    int i = 0;
for (String s : colors.keySet()) {
jrbColor[i] = new JRadioButton(s);
group.add(jrbColor[i]);
p1.add(jrbColor[i]);
jrbColor[i].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String hexColor = colors.get(((JRadioButton) e.getSource()).getText());
getContentPane().setBackground(Color.decode(hexColor));
}
});
}

关于java - 有人能告诉我为什么我的 actionListener for 循环不起作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22119950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com