【问题标题】:How to calculate number from two Jtextfield?如何从两个 Jtextfield 计算数字?
【发布时间】:2020-12-21 16:56:16
【问题描述】:

我正在设计一个食品订购系统,我需要获取客户支付的现金输入,然后减去他们需要支付的总价格来计算零钱。我的JTextField 无法显示更改的正确答案,它只显示 0.0。我不确定我的代码有什么问题。希望大家能帮帮我。感谢您的帮助,谢谢!

public Cash() {
    init();
    btnPay.addActionListener(this);
    setVisible(true);
}

public String returnChange1() {
    double change = 0.00 ;
    double custPay;
    String total = lblDisplayTotal.getText();
    double a=Double.parseDouble(total);

    if (!(txtCustPay.getText().isEmpty())){
        custPay = Double.parseDouble(txtCustPay.getText());
        change = custPay - a;
    }
    return String.valueOf(change);
}

public void actionPerformed(ActionEvent e) {
    if (e.getSource().equals(btnPay)) {
        returnChange1();
    }
}

public void init() {
    txtChange = new JTextField(returnChange1());
    txtChange.setSize(150, 30);
    txtChange.setLocation(150, 250);
    add(txtChange);
}

【问题讨论】:

  • 您将更改值分配给txtChange 字段的唯一时间是在初始化期间(此时无关紧要,因为此时txtCustPay 没有任何值)。您需要更新您的actionPerformed 以在执行时将更改值传递给txtChange

标签: java swing jtextfield gettext settext


【解决方案1】:

您没有将功能分配给文本字段。在按钮操作中,不要简单地调用函数,在这种情况下,您应该将函数分配给文本字段:txtChange.setText(returnChange1()),同时尝试尝试将文本转换为双精度的位置:

try{
    double a = Double.parseDouble(total);
}catch(NumberFormatException e){
    e.printStackTrace;
}

当用户错误地输入了一个不是数字的字符时,上面的代码很有用。

public Cash() {
      
    init();
    btnPay.addActionListener(this);
    setVisible(true);

}

public String returnChange1() {

    double change = 0.00;
    double custPay;
    String total = lblDisplayTotal.getText();
    double a = Double.parseDouble(total);

    if (!(txtCustPay.getText().isEmpty())) {
        custPay = Double.parseDouble(txtCustPay.getText());
        change = custPay - a;
    }

    return String.valueOf(change);

}

public void actionPerformed(ActionEvent e) {

    if (e.getSource().equals(btnPay)) {
        txtChange.setText(returnChange1());
    }
}

public void init() {
    txtChange = new JTextField(returnChange1());
    txtChange.setSize(150, 30);
    txtChange.setLocation(150, 250);
    add(txtChange);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 2023-02-21
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多