Java 从JTextField计算更改

Java 从JTextField计算更改,java,swing,Java,Swing,我有3个文本字段。一个是totalTF,另一个是tenderedTF,最后一个是changeTF。我想知道如何在totalTF中获取总价,并允许用户将他们给出纳员的金额输入到tenderedTF中,然后在选择支付按钮并显示在changeTF中后,它应该计算出更改。这是到目前为止我的代码。我正试着做数学运算,然后设置更改。任何帮助都将不胜感激 JButton payButton = new JButton("Pay"); payButton.setBounds(970, 569,

我有3个文本字段。一个是totalTF,另一个是tenderedTF,最后一个是changeTF。我想知道如何在totalTF中获取总价,并允许用户将他们给出纳员的金额输入到tenderedTF中,然后在选择支付按钮并显示在changeTF中后,它应该计算出更改。这是到目前为止我的代码。我正试着做数学运算,然后设置更改。任何帮助都将不胜感激

JButton payButton = new JButton("Pay");
        payButton.setBounds(970, 569, 209, 51);
        contentPane.add(payButton);

        // Calculate Change
        changeTF.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e) 
            {
                if(e.getSource() == payButton)
                {
                    double change = Double.valueOf(totalTF.getText()) - Double.valueOf(tenderedTF.getText());
                    changeTF.setText(String.valueOf(change));
                }
            }
        });

        tenderedTF.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e) 
            {
                if(e.getSource() == payButton)
                {
                    double change = Double.valueOf(totalTF.getText()) - Double.valueOf(tenderedTF.getText());
                    changeTF.setText(String.valueOf(change));
                }
            }
        });

您希望在用户单击payButton时执行代码,因此我认为您应该在payButton上添加侦听器:

payButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        double change = Double.valueOf(totalTF.getText()) - Double.valueOf(tenderedTF.getText());
        changeTF.setText(String.valueOf(change));
    }
});
我认为您添加到textfields的侦听器无法工作,因为e.getSource()返回发起事件的textfield,它不能是payButton

编辑:新修订版,包括评论中发布的问题:

payButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        double change = Double.valueOf(tenderedTF.getText()) - Double.valueOf(totalTF.getText());
        if(change<0){
            changeTF.setText(String.valueOf(-change) + " missing");
        } else {
            changeTF.setText(String.valueOf(change));
        }
    }
});
payButton.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
double change=double.valueOf(tenderedTF.getText())-double.valueOf(totalTF.getText());

如果(change
changeTF
tenderedTF
将永远不会接收由
payButton
触发的操作事件,它们只接收自己按代码方式触发的操作事件。请尝试向按钮添加一个
ActionListener
。您希望在单击“支付”按钮时进行计算,对吗?然后您需要一个action Listener在按钮上的侦听器上,而不是在字段上。太棒了!!它工作了,只是它没有在changeTF中将它设置为正确的小数位数。我应该如何克服这个问题。谢谢谢谢谢谢@lucasvw。我已经更改了它,现在它正在工作。傻我应该知道的。请看@Movillian,别忘了“接受”答案让人们知道你的问题已经解决。我知道我已经接受了答案,但我想知道如何检查以确保订单是否最终确定,例如,订单总额为10.00欧元,而客户只给出纳9.00欧元。我如何标记客户没有提供足够的资金。