【问题标题】:How do I get my Java GUI to calculate fields properly?如何让我的 Java GUI 正确计算字段?
【发布时间】:2016-09-19 15:21:18
【问题描述】:

我没有遇到任何错误,但运行程序时没有任何反应。任何帮助,将不胜感激。我只需要能够添加起始余额,然后计算存款或取款。

package account;

import java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

class GUI implements ActionListener{

JTextField txt, txt2, txt3;
JButton submit;
JLabel balance;
double Balance = 0.00;

GUI(){
    JFrame main = new JFrame("Account GUI ");
    main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    txt = new JTextField(10);
    txt2 = new JTextField(10);
    txt3 = new JTextField(10);

    JPanel gui = new JPanel(new BorderLayout(8,8));
    gui.setBorder(new EmptyBorder(8,8,8,8));
    main.setContentPane(gui);

    JPanel labels = new JPanel(new GridLayout(0,1));
    JPanel controls = new JPanel(new GridLayout(0,1));
    gui.add(labels, BorderLayout.WEST);
    gui.add(controls, BorderLayout.CENTER);

    labels.add(new JLabel("Starting Balance"));
    controls.add(txt);
    txt.addActionListener(this);
    labels.add(new JLabel("Deposit Amount: "));
    controls.add(txt2);
    txt2.addActionListener(this);
    labels.add(new JLabel("Withdraw Amount: "));
    controls.add(txt3);
    txt3.addActionListener(this);

    submit = new JButton("Submit");
    gui.add(submit, BorderLayout.SOUTH);
    balance = new JLabel("New Balance    " + Balance);
    gui.add(balance,BorderLayout.NORTH);
    submit.addActionListener(this);

    main.pack();
    main.setVisible(true);
 }
 public void actionPerformed(ActionEvent arg0) {
    if (txt!=null){
        double strtblnc = Double.parseDouble(txt.getText());
        Balance = Balance + strtblnc;
    }
        else if (txt2!=null){
            double dpst = Double.parseDouble(txt2.getText());
            Balance = Balance + dpst;
        }
        else if(txt3!=null){
                double wthdrw = Double.parseDouble(txt3.getText());
                Balance = Balance - wthdrw;
 }
}
public static void main(String[] args) {
    GUI test = new GUI();
}       
}

【问题讨论】:

    标签: java user-interface textfield


    【解决方案1】:

    您没有收到新余额编号的原因是您从未真正将文本重置到您的 JLabel。最初初始化时:

    balance = new JLabel("New Balance " + Balance);
    

    您将余额设置为 0.00。话虽如此,您需要添加:

    balance.setText("New Balance " + Balance);
    

    为您提供更新后的余额。

    我还注意到,如果您将文本字段留空,您发布的代码将不起作用。查看下面的更新代码并尝试一下。

    public void actionPerformed(ActionEvent arg0) {
    
     double strtblnc; 
     double dpst; 
     double wthdrw;
    
     String sTxt = txt.getText();
     String sTxt2 = txt2.getText();
     String sTxt3 = txt3.getText();
    
     if(sTxt.isEmpty())
         sTxt = "0";
    
     if(sTxt2.isEmpty())
         sTxt2 = "0";
    
     if(sTxt3.isEmpty())
         sTxt3 = "0";
    
    
     dpst = Double.parseDouble(sTxt2);//parses deposit;
     strtblnc  = Double.parseDouble(sTxt); //parses starting balance;
     wthdrw = Double.parseDouble(sTxt3); //parses withdraw;
    
     Balance = Balance + strtblnc + dpst - wthdrw;
     balance.setText("New Balance    " + Balance);    
    }    
    

    【讨论】:

    • 感谢收看。是的,代码填充了 GUI,但是当您在任何字段中输入金额并点击提交时,什么也没有发生。
    • 我已经删除了我的旧答案并更新了一个已解决的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多