【发布时间】:2016-06-07 11:49:56
【问题描述】:
我正在用 Java 构建一个简单的程序来获得平衡(我的设置为 8000 美元)。我想把钱存进去,所以我有一个带有 0-9 按钮、一个文本区域和一个存款按钮的 UI,所以如果用户想存 100 美元,他会按一次 1,然后按两次 0。一切正常,它第一次存入,但第二次存入双倍的钱。如果我按我的存款按钮 10 次并选择 1 美元,然后按 Enter 存款 10 美元。我认为我的 btn 动作监听器的结构可能是错误的。
有什么想法吗?
代码:
btnDeposit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
label1.setText("Deposit: How much would you like to deposit?");
btnWithdraw.setEnabled(false);
btnBalance.setEnabled(false);
btnEnter.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
//convert text area into double
double depositNumber = Double.parseDouble(ta.getText());
sav.deposit(depositNumber);
btnWithdraw.setEnabled(true);
btnBalance.setEnabled(true);
}
});
}
});
我的存款功能是:
public void deposit(double depositAmount) {
balance += depositAmount;
System.out.println("Your updated balance is: " + balance);
}
我还注意到它不会回到它开始的地方,如果我继续点击 Enter,它会继续添加和添加......
清除我的文本区域的按钮:
btnClear.addActionListener(new new ActionListener(){
@Override
public void actionPerformed(ActionEvent ae) {
ta.setText("");
}
});
【问题讨论】:
-
你清除文本域吗?
-
是的,如果我存入$1,点击进入,然后清除textarea,按1,去存入然后进入,它存入$2!如果我再次这样做,它将存入 3 美元!
-
你在哪里清除它?
-
我有一个清除按钮,将我的 textarea 设置为“”,我正在编辑上面的代码并添加该位。谢谢
-
我建议您将
btnEnter.addActionListener...移出btnDeposit.addActionListener...。我猜它每次都会添加一个新的 actionlistener,所以在第二次尝试中,你有 2 个btnDeposit的监听器,它们添加了两次钱。