for (int j = 0; j < 4; j++) { final int index = j; answerButtons[index].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { rightanswer =getAnswer(i); i++; next.setEnabled(true); if (answerButtons[index].getText().equals(rightanswer)) { right++; score.setText(right + "/" + i); show.setText("correct!"); answerButtons[index].setBackground(Color.green); } else { show.setText("wrong"); score.setText(right + "/" + i); answerButtons[index].setBackground(Color.pink); } rightanswer =getAnswer(i); enabled(false); next.setEnabled(true); } }); }为什么正确答案不变绿
时间: 2024-01-19 16:03:09 浏览: 59
根据你提供的代码,正确答案没有变绿的原因可能是因为你在每次点击答案按钮时都会重新获取正确答案并赋值给`rightanswer`变量。因此,即使答案按钮的文本与正确答案相同,也不会变绿色,因为此时`rightanswer`变量已经被更新为下一道题的正确答案了。
要解决这个问题,你可以在每次点击答案按钮时,先将正确答案保存在一个临时变量中,然后再将`rightanswer`变量更新为下一道题的正确答案。同时,在判断答案是否正确时,使用临时变量来比较。这样,即使`rightanswer`变量被更新了,也不会影响判断结果。
相关问题
for (int j = 0; j < 4; j++) { final int index = j; answerButtons[index].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { rightanswer =getAnswer(i); i++; next.setEnabled(true); if (answerButtons[index].getText().equals(rightanswer)) { right++; score.setText(right + "/" + i); show.setText("correct!"); answerButtons[index].setBackground(Color.green); } else { show.setText("wrong"); score.setText(right + "/" + i); answerButtons[index].setBackground(Color.pink); } enabled(false); rightanswer =getAnswer(i); next.setEnabled(true); } }); }
这段代码是一个循环语句,它为每个答案按钮添加了一个监听器。当用户点击答案按钮时,监听器会执行其中的代码块。具体来说,这段代码的功能是:
1. 获取当前题目的正确答案,将其赋值给`rightanswer`变量。
2. 将题目序号`i`加1,表示用户已经回答了一道题目。
3. 激活下一题按钮。
4. 如果用户回答的答案与正确答案相同,则将`right`变量加1,表示用户回答正确;同时,更新得分和提示信息,并将答案按钮的背景色设置为绿色。
5. 如果用户回答的答案与正确答案不同,则更新得分和提示信息,并将答案按钮的背景色设置为粉色。
6. 禁用所有答案按钮。
7. 获取下一道题目的正确答案,将其赋值给`rightanswer`变量。
8. 激活下一题按钮。
希望这个解释能够帮助您更好地理解这段代码。
for(int j=0;j<4;j++) { final int index = j; answerButtons[index].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { i++; next.setEnabled(true); if (answerButtons[index].getText().equals(rightanswer)) { right++; score.setText(right + "/" + i); show.setText("correct!"); answerButtons[index].setBackground(Color.green); } else { show.setText("wrong"); score.setText(right + "/" + i); answerButtons[index].setBackground(Color.pink); } rightanswer = getAnswer(i); enabled(false); next.setEnabled(true); }为什么下一个题的时候不能选择了
根据提供的代码,你在每个答案按钮的 ActionListener 中都有执行 `enabled(false)` 的操作,这会使得所有的答案按钮都被禁用(即不能选择)。因此,在进入下一题的时候,你需要将答案按钮重新启用,可以在下一题按钮的 ActionListener 中添加如下代码:
```
next.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 答案按钮重新启用
for (int j = 0; j < 4; j++) {
answerButtons[j].setEnabled(true);
answerButtons[j].setBackground(null); // 将按钮背景色还原
}
// 其他逻辑代码
// ...
}
});
```
这样,在进入下一题时,所有的答案按钮就会被重新启用。
阅读全文