gpt4 book ai didi

java - 如何将 int 值传递给 JButton Action 监听器?

转载 作者:行者123 更新时间:2023-12-01 17:54:15 24 4
gpt4 key购买 nike

我正在制作一个测验程序,询问用户简单的数学问题,收到答案,计算用户的分数等...

我收到错误,因为我在 actionListener 中使用变量(在本例中为 x):

for(x = 0;x < total;x++){
System.out.print((x+1)+". ");

questionLabel.setText(number1" + "+ number2);

answerButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
int returnedAns = Integer.parseInt(answerTextField.getText());

if(returnedAns == answerToTheQuestion){
score++;
System.out.println("correct");
question[x].result = true;
}else{
System.out.println("wrong");
question[x].result = false;
}

try{
Thread.sleep(500);
}catch(Exception e){}
}
});
}

当我运行代码时,它会突出显示 int x 并表示“从内部类引用的局部变量必须是最终的或实际上是最终的”。

请帮帮我,我真的不知道该怎么办。

我无法将其标记为最终版本,因为我需要能够更改它以使 for 循环正常工作...

最佳答案

最好的方法是为此 ActionListener 实现定义一个额外的类。

public class NumberedActionListener implements ActionListener {

private int number;

public NumberedActionListener(int number) {
this.number = number;
}

@Override
public void actionPerformed(ActionEvent e) {
// ...
}
}

然后你可以将 int 值传递给构造函数。

answerButton.addActionListener(new NumberedActionListener(x));

如果您喜欢干净的代码,这看起来也会更好......

关于java - 如何将 int 值传递给 JButton Action 监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46642247/

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