Java 如何从两个Jtextfield计算数字?

Java 如何从两个Jtextfield计算数字?,java,swing,jtextfield,gettext,settext,Java,Swing,Jtextfield,Gettext,Settext,我正在设计一个食品订购系统,我需要得到顾客支付的现金,然后减去他们需要支付的总价格来计算变化。我的JTextField无法显示更改的正确答案,它只显示0.0。我不确定我的代码有什么问题。希望你们都能帮助我。感谢你的帮助,谢谢 公共现金(){ init(); btnPay.addActionListener(此); setVisible(真); } 公共字符串returnChange1(){ 双变=0.00; 双薪; String total=lbldisplaytottal.getText();

我正在设计一个食品订购系统,我需要得到顾客支付的现金,然后减去他们需要支付的总价格来计算变化。我的
JTextField
无法显示更改的正确答案,它只显示0.0。我不确定我的代码有什么问题。希望你们都能帮助我。感谢你的帮助,谢谢

公共现金(){
init();
btnPay.addActionListener(此);
setVisible(真);
}
公共字符串returnChange1(){
双变=0.00;
双薪;
String total=lbldisplaytottal.getText();
双倍a=双倍。解析双倍(总计);
if(!(txtCustPay.getText().isEmpty()){
custPay=Double.parseDouble(txtCustPay.getText());
改变=支付-a;
}
返回字符串.valueOf(更改);
}
已执行的公共无效操作(操作事件e){
如果(e.getSource().equals(btnPay)){
returnChange1();
}
}
公共void init(){
txtChange=newjtextfield(returnChange1());
txtChange.setSize(150,30);
txtChange.setLocation(150250);
添加(txtChange);
}

您没有将函数分配给文本字段。在按钮操作中,不要简单地调用函数,在这种情况下,您应该做的是将函数分配给文本字段:
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);
}

将更改值指定给
txtChange
字段的唯一时间是在初始化期间(因为
txtCustPay
在该点上没有值,所以这并不重要)。您需要更新您的
actionPerformed
,以便在执行时将更改值传递到
txtChange