gpt4 book ai didi

java - JButton 根据按下的次数重复执行操作

转载 作者:行者123 更新时间:2023-12-01 09:49:42 24 4
gpt4 key购买 nike

我正在用 Java 构建一个简单的程序,它可以获得余额(我的设置为 8000 美元)。我想存钱进去,所以我有一个带有 0-9 按钮、一个文本区域和一个存款按钮的 UI,所以如果用户想存入 100 美元,他会按 1 一次,然后按 0 两次。所有这些都有效,第一次存款,但第二次存入双倍金额。如果我按存款按钮 10 次并选择 1 美元,然后按 Enter 键,则会存款 10 美元。我认为我的 btn Action 监听器的结构可能是错误的。

有什么想法吗?

代码:

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

最佳答案

问题已在评论区指出。您正在声明多个监听器,每次执行操作时,这些监听器都会调用相应的 deposit()withdraw() 方法。

为了避免这种情况。您可以像这样为所有按钮设置一个监听器类。

创建内部类

private class MySpecialListener implements ActionListener{

@Override
public void actionPerformed(ActionEvent ae) {
if(e.getSource == btnDesposit) // do stuff and so on
}

}

并像这样添加监听器

MySpecialListener myListener = new MySpecialListener();
btnDeposit.addActionListener(myListener);
<小时/>

上面的内容需要您重新编写代码,但它的结构比您当前的代码更好。要解决当前的问题,您可以像这样删除最后一个监听器:

for(ActionListener al : btnEnter.getActionListeners())
btnEnter.removeActionListener(al)

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

});

关于java - JButton 根据按下的次数重复执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37678592/

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